HUE Licht an solange Bewegung

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


Hi,

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.

http://www.siio.de/connected-home/kleine-lua-scripte-teil-5-bewegung-im-raum-erkennen/

Gruß

Vielen Dank, aber wo trage ich da die Hue ein die ich damit schalten möchte?

Hi,

in die beiden Funktionen, welche beim Auslösen/Sicher melden ausgeführt werden. Dies wird im Artikel erklärt :wink:

Gruß

Ich benutze das hier

--[[ 
%% 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.

Grüße

Matthias

Funktioniert gut, doch was, wenn ich mehrere HUE Lampen einschalten will?

Habe versucht: local light1 = 118,119 – ID der Hue Lampe

Das klappt aber nicht, es wird immer nur eine Lampe eingeschaltet.
Was mache ich falsch?

Gruß
Marco

Weiterhin geht die eine Lampe nach einer Bewegung nicht mehr aus.

Hier die Meldung:

[DEBUG] 20:16:55: Schalte Licht ein
[DEBUG] 20:17:00: Licht bereits an

Alles klar, habe es selber hinbekommen.