Das Script funktioniert perfekt mit normalen Lampen. Wie kann ich hier aber eine HUE-Stripe einbinden?
--[[
%% properties
748 value
%% globals
--]]
-- VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein)
local scene = 114 -- ID dieser Szene
local motion = 748 -- ID des Bewegungssensors
local switch = 160 -- ID des Relay Switches
-- Lösche doppelte Szene(n)
if (fibaro:countScenes()>1) then
fibaro:abort();
end
-- SCHALTE LICHT EIN & AUS
if (tonumber(fibaro:getValue(motion, "value")) > 0 ) and (tonumber(fibaro:getValue(switch, "value"))) < 1 then
fibaro:call(switch, "turnOn");
fibaro:debug("Schalte Licht ein");
end
-- Verzögerung in Sekunden nach der letzten erkannten Bewegung, bevor das Licht ausgeschaltet wird
if (tonumber(fibaro:getValue(switch, "value"))) > 0 then
local starttimer = 10;
local timer = (starttimer);
fibaro:debug("Starte Timer");
repeat
fibaro:sleep(1000);
-- Schalte Licht aus, wenn Schalter manuell betätigt wird und warte 10 Sekunden, um ein
-- versehentliches (erneutes) Aktivieren der Szene zu verhindern
if (tonumber(fibaro:getValue(switch, "value"))) < 1 then
timer=1;
fibaro:call(switch, "turnOff");
fibaro:sleep(10000);
break
end
timer=timer-1;
-- Timer zurücksetzen, wenn neue Bewegung erkannt wird innherhalb der Verzögerungszeit
if (tonumber(fibaro:getValue(motion, "value"))) > 0 then
timer=starttimer;
fibaro:debug("Resete Time, Bewegung erkannt bzw. Motionsensor sendet noch nicht (vgl. Parameter 6)");
end
until (timer<1)
-- Schalte Licht aus, wenn Timer vollständig abgelaufen ist
fibaro:call(switch, "turnOff");
fibaro:debug("Timer abgelaufen/Schalte Licht aus");
fibaro:killScenes(scene);
end
nimm einfach folgendes Skript und füg da in die entsprechenden Funktionen die Befehle für An/Aus der HUEs ein. Alternativ musst du die turnOn/Off-Befehle für die Lampen entfernen und durch die oben genannten Befehle ersetzen.
--[[
%% properties
61 value
%% globals
--]]
-- VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein)
local scene = 33 -- ID dieser Szene
local motion = 61 -- ID des Bewegungssensors
local brightness = 63 -- ID des Lichtsensors
local light1 = 78 -- ID der Hue Lampe
-- Lösche doppelte Szene(n), Abfrage automatisches Licht und Anwesenheit
if (fibaro:countScenes()>1
or (tonumber(fibaro:getGlobalValue("Licht_Auto")) == tonumber("0"))
or (tonumber(fibaro:getGlobalValue("Matthias_Anwesend")) == tonumber("0")))
then
fibaro:debug("Nicht zu Hause oder automatisches Licht gesperrt")
fibaro:abort();
end
-- SCHALTE LICHT EIN & AUS
if (tonumber(fibaro:getValue(motion, "value")) > 0 )
and (tonumber(fibaro:getValue(brightness, "value")) < 30 )
and (tonumber(fibaro:getValue(light1, "on"))) == 0
then
fibaro:call(light1, "turnOn");
fibaro:call(light1, "changeBrightness", 150)
fibaro:debug("Schalte Licht ein");
else
fibaro:debug("Licht bereits an");
fibaro:killScenes(scene);
end
-- Verzögerung in Sekunden nach der letzten erkannten Bewegung, bevor das Licht ausgeschaltet wird
fibaro:sleep(2000);
if (
tonumber(fibaro:getValue(light1, "on")) == 1 )
and (tonumber(fibaro:getValue(light1, "ui.brightness.value")) > 140 )
and (tonumber(fibaro:getValue(light1, "ui.brightness.value"))) < 160
then
local starttimer = 90;
local timer = (starttimer);
fibaro:debug("Starte Timer");
repeat
fibaro:sleep(1000);
-- Schalte Licht aus, wenn Schalter manuell betätigt wird und warte 5 Sekunden, um ein
-- versehentliches (erneutes) Aktivieren der Szene zu verhindern
if (tonumber(fibaro:getValue(light1, "on"))) == 0
then
timer = 1;
fibaro:call(light1, "turnOff");
fibaro:sleep(5000);
break
end
if (
tonumber(fibaro:getValue(light1, "ui.brightness.value")) < 160 )
and (tonumber(fibaro:getValue(light1, "ui.brightness.value")) > 140 )
and (tonumber(fibaro:getValue(light1, "on"))) == 1
then
timer=timer-1;
else
fibaro:debug("Licht manuell geschaltet");
fibaro:killScenes(scene);
end
-- Timer zurücksetzen, wenn neue Bewegung erkannt wird innherhalb der Verzögerungszeit
if (tonumber(fibaro:getValue(motion, "value")) > 0 )
and (tonumber(fibaro:getValue(light1, "ui.brightness.value")) < 160 )
and (tonumber(fibaro:getValue(light1, "ui.brightness.value")) > 140 )
and (tonumber(fibaro:getValue(light1, "on"))) == 1
then
timer=starttimer;
fibaro:debug("Reset Time, Bewegung erkannt bzw. Motionsensor sendet noch nicht (vgl. Parameter 6)");
end
until (timer<1)
-- Schalte Licht aus, wenn Timer vollständig abgelaufen ist
fibaro:call(light1, "turnOff");
fibaro:debug("Timer abgelaufen/Schalte Licht aus");
fibaro:killScenes(scene);
end
Damit lässt sich die Hue im Bad per Bewegung steuern. Aber da die Helligkeit eingegrenzt ist, kann man das Licht
auch manuell Einschlten und der Bewegunsgmelder schaltet es dann nicht aus. Außerdem kann man es auch damit wieder
manuell ausschalten. Geht aber nur, wenn das manuell eingeschaltete Licht einen Helligkeitswert außerhalb der eingestellten
Grenzen hat.