habe vor kurzen ein Script geschrieben was erst das Indirekte-Licht und anschließend das Haupt-Licht anschaltet.
Wir benutzen es z.b. für die Küche wo erst die Küchenzeile per LED beleuchtet wird und wenn man sich länger im Raum aufhält auf das Hautlicht angeschaltet wird.
Eignet sich auch für diverse andere Räume wo man sich nicht lange aufhält, bzw. nur durchgeht und dann erstmal nur die Indirekte-Beleuchtung ansteuern möchte.
<pre class=“brush: applescript; gutter: true; first-line: 1; highlight: []; html-script: false”>–[[
%% properties
58 value
%% globals
–]]
– Lichtsteuerung—
local sensorId = 58 --ID of Sensor
local lightId = 61 --ID of Light
local lightled = 74 – ID of Led
local lux = 60 – ID of Luxsensor
local bewegung = 1;
local zeit = os.time()
if fibaro:countScenes() > 1 or tonumber(fibaro:getValue(sensorId, "value")) == 0
then
fibaro:abort()
end
if (tonumber(fibaro:getValue(lux, "value")) < 30)
then
fibaro:call(lightled, "turnOn");
fibaro:debug('LED an');
repeat
local Sensor = (tonumber(fibaro:getValue(sensorId, "value")) > 0);
if (Sensor)
then
bewegung = bewegung + 1;
fibaro:debug('Bewegung' ..bewegung);
elseif os.time() - zeit > 60
then
fibaro:call(lightled, "turnOff");
fibaro:debug('Keine Bewegung' ..bewegung);
fibaro:killScenes(9);
end
fibaro:sleep(10000);
until (bewegung >= 7)
fibaro:call(lightId, "turnOn")
fibaro:debug('Licht an');
fibaro:sleep(10000)
fibaro:call(lightled, "turnOff");
while true do
fibaro:debug('Schleife gestartet');
if os.time() - zeit > 180
then
fibaro:call(lightId, "turnOff");
fibaro:debug('Licht aus');
fibaro:abort()
break
end
if tonumber(fibaro:getValue(sensorId, "value")) > 0 then
zeit = os.time()
end
fibaro:sleep(2000)
end
die Zeit der indirekten Beleuchtung kannst du hier bestimmen
…
until (bewegung >= 7)
…
Bewegungsmelder muss als ausgelöst erkannt werden und das 7 mal, dann schaltet das Hauptlicht an.
Sollte das nicht der Fall sein und 60 sek vergehen wir die indirekte Beleuchtung ausgeschaltet und das Hauptlicht nicht aktiviert.
Mit den Werten kannst du die Umschaltung anpassen, verzögern oder verkürzen, je nach bedarf.
Ist das der Fall, wird das Hauptlicht angeschaltet und die indirekte Beleuchtung aus, den Wert für die Abschaltung wenn keine Bewegung
kannst du hier ändern.
…
if os.time() - zeit > 180
…
oh danke!
Ich hatte Mist eingebaut, deswegen hat es bei mir nicht funktioniert.
Bei folgender Variable:
local bewegung = 1;
dachte ich, das wäre die ID der Szene und habe es geändert. Dabei ist es der Zählwert.
Allerdings steht in Zeile 39:
fibaro:killScenes(9);
Ist 9 die ID deiner Szene?
Könnte man doch ersetzen mit der allgemein:
fibaro:abort()
Daniel hat mir das Script mal so zusammengeschraubt Danke Daniel
--[[
%% properties
210 value
%% globals
--]]
-- Lichtsteuerung—
local sensorId = 210 --ID of Sensor
local lightId = 132 --ID of Light
local lightled = 184 -- ID of Led
local lux = 212 -- ID of Luxsensor
local bewegung = 1;
fibaro:debug('start');
if fibaro:countScenes() > 1
then
fibaro:abort()
fibaro:debug('abort');
end
fibaro:debug('start');
if (tonumber(fibaro:getValue(lux, "value")) < 30) then
fibaro:call(lightled, "turnOn");
fibaro:debug('LED an');
local zeit = os.time();
repeat
if (tonumber(fibaro:getValue(sensorId, "value")) > 0) then
bewegung = bewegung + 1;
fibaro:debug('Bewegung' ..bewegung);
elseif os.time() - zeit > 10 then
fibaro:call(lightled, "turnOff");
fibaro:debug('Keine Bewegung' ..bewegung);
fibaro:abort();
end
fibaro:sleep(10000); -- Sleep 10 Sekunden
until (bewegung >= 3) -- Faktor Sekunden x 10
fibaro:call(lightId, "turnOn")
fibaro:debug('Licht an');
fibaro:sleep(10000)
zeit = os.time()
while true do
fibaro:debug('Schleife gestartet');
if os.time() - zeit > 10 then -- wenn X Sekunden keine Bewegung schalte Licht aus
fibaro:call(lightId, "turnOff");
fibaro:debug('Licht aus');
fibaro:call(lightled, "turnOff");
fibaro:abort()
break
end
if tonumber(fibaro:getValue(sensorId, "value")) > 0 then
zeit = os.time()
end
fibaro:sleep(2000)
end
end
fibaro:debug('ende');
Hey, ich habe noch einmal alle Einstellungen in den Kopf gerückt und etwas angepasst. Bitte testen und meckern
Die Idee ist übrigens super, danke Alex!
--[[
%% properties
49 value
%% globals
--]]
-- Lichtsteuerung—
local sensorId = 49 --ID of Sensor
local lightId = 6 --ID of Light
local lightled = 39 -- ID of Led
local lux = 51 -- ID of Luxsensor
local luxgrenze = 30 --wenn lux kleiner als X, dann szene auslösen
local zeitled = 10 --wie lange nur leds bis licht zugeschalten
local zeitlicht = 10 --wie lange licht anbehalten, wenn keine bewegung (led und gesamt)
fibaro:debug('start1');
if fibaro:countScenes() > 1 then
fibaro:debug('abort');
fibaro:abort();
end
if (tonumber(fibaro:getValue(lux, "value")) < luxgrenze) then
fibaro:call(lightled, "turnOn");
fibaro:debug('LED an');
local zeit = os.time();
local bewegung = 1;
while (zeitled >= bewegung) do
if (tonumber(fibaro:getValue(sensorId, "value")) > 0) then
bewegung = bewegung + 1;
zeit = os.time();
elseif os.time() - zeit > zeitlicht then
fibaro:call(lightled, "turnOff");
fibaro:debug('Keine Bewegung' ..bewegung);
fibaro:abort();
end
fibaro:sleep(1000);
end
fibaro:call(lightId, "turnOn")
fibaro:debug('Licht an');
zeit = os.time()
while os.time() - zeit < zeitlicht do
if tonumber(fibaro:getValue(sensorId, "value")) > 0 then
zeit = os.time()
end
fibaro:sleep(1000)
end
fibaro:call(lightId, "turnOff");
fibaro:call(lightled, "turnOff");
fibaro:debug('Licht aus');
end
fibaro:abort()
erstmal vielen Dank für das Script, läuft super…bis auf eins.
Habe im Übergang von Indirekt auf Direktes Licht noch das ausschalten des Indirekten hinzugefügt.
--[[
%% properties
58 value
%% globals
--]]
-- Lichtsteuerung—
local sensorId = 58 --ID of Sensor
local lightId = 61--ID of Light
local lightled = 74 -- ID of Led
local lux = 60 -- ID of Luxsensor
local luxgrenze = 25 --wenn lux kleiner als X, dann szene auslösen
local zeitled = 45 --wie lange nur leds bis licht zugeschalten
local zeitlicht = 120 --wie lange licht anbehalten, wenn keine bewegung (led und gesamt)
fibaro:debug('start1');
if fibaro:countScenes() > 1 then
fibaro:debug('abort');
fibaro:abort();
end
if (tonumber(fibaro:getValue(lux, "value")) < luxgrenze) then
fibaro:call(lightled, "turnOn");
fibaro:debug('LED an');
local zeit = os.time();
local bewegung = 1;
while (zeitled >= bewegung) do
if (tonumber(fibaro:getValue(sensorId, "value")) > 0) then
bewegung = bewegung + 1;
zeit = os.time();
elseif os.time() - zeit > zeitlicht then
fibaro:call(lightled, "turnOff");
fibaro:debug('Keine Bewegung' ..bewegung);
fibaro:abort();
end
fibaro:sleep(1000);
end
fibaro:call(lightId, "turnOn")
fibaro:call(lightled, "turnOff")
fibaro:debug('Licht an');
zeit = os.time()
while os.time() - zeit < zeitlicht do
if tonumber(fibaro:getValue(sensorId, "value")) > 0 then
zeit = os.time()
end
fibaro:sleep(1000)
end
fibaro:call(lightId, "turnOff");
fibaro:call(lightled, "turnOff");
fibaro:debug('Licht aus');
end
fibaro:abort()</pre>