Blog Licht an solange Bewegung

ist es denn nicht so, dass ich dort den Grenzwert eingeben kann, wenn z.B. es NICHT nacht ist, aber dunkler als der eingestellte Wert, trotzdem das Licht geschaltet werden soll?

Hallo Daniel,
bin neu hier und habe auch keine Erfahrung mit Programmieren.
Habe das Skript und möchte das, das Licht erst bei Dämmerung an geht.
Die ID des Lichtsensors ist 19.
Kannst du mir zeigen wo ich was eintragen muss?

–[[
%% properties
17 value
8 value
%% globals
–]]
– VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein)
local scene = 6 – ID dieser Szene
local motion = 17 – ID des Bewegungssensors
local switch = 8 – 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 = 100;
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

Hallo zusammen,

irgendwie bekomme ich das ganze nicht zum Laufen.
Habe einen Motion Sensor und ein Fibaro RBGW Modul. Diese ist mit einem LED Stripe verbunden.

Ich habe das Script wie im Blogbeitrag als Szene eingefügt aber ich kann vor dem Motion Sensor tanzen es passiert nichts.
Es geht demnach kein Licht an.

Was mache ich nur falsch?

Gruß
Guido

Hi,

hast du ALLE IDs angepasst? Wenn nicht, dann kann es nicht funktionieren :wink:

Gruß

Hi Guido, wenn alle IDs angepasst sind sollte es eigentlich funktionieren.
Tut es zumindest bei mir.
Das einzige was ich noch gerne in diesem Script hätte wäre das, das Licht am Tag nicht an geht.
Währe echt super wenn jemand mir das im obigen Beitrag ergänzen könnte.
Danke

Gruß
Drago

Hallo,

ID sind angepasst und ich denke das ganze läuft jetzt. Aber ich habe das Gefühl das alles sehr Zeitverzögert angeht.
Also wenn ich vor dem Motion Eye turne dann dauert das doch sehr lange bis das Stripe angeht.
Kann man irgendwo eine Zeit einstellen das der Motion Sensor schneller reagiert oder ist im Script eine Zeitverzögerung eingebaut?

Hallo,
habe hier schon mehrfach um Hilfe gebeten.
Habe mir die HC2 grade erst ende letzten Jahres gekauft und bin noch nicht so richtig durchgestiegen wie das mit dem Programmieren funktioniert.
Das Script “Licht an solange Bewegung, egal welcher Schalter” ist einfach genial.
Würde aber das ganze gerne Helligkeits gesteuert haben wollen. Das heißt das, das Licht erst bei Bewegung an geht wenn ein LUX Wehrt von zum Beispiel 200 unter schritten wurde.Wenn es Hell ist soll das Licht bei Bewegung nicht an gehen.
Würde mich freuen wenn mir jemand helfen könnte.
Danke
PS. Das Script habe ich bereits auf Seite drei eingefügt.
Gruß
Drago

Hallo,
wie würde denn der Script aussehen, wenn ich zwei Bewegungsmelder habe.

Und, wie würde dieser aussehen, wenn ich die Helligkeit mitabfragen möchte? Also Lux unter 0 z. B.

Bei mir sieht er mit zwei Motion Sensoren so aus.

--[[ 
%% properties
80 value
340 value
%% globals 
--]]
-- VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein)
local scene = 250 -- ID dieser Szene
local motion1 = 80 -- ID des 1. Bewegungssensors
local motion2 = 340 -- ID des 2. Bewegungssensors
local switch = 86 -- 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(motion1, "value")) > 0 ) or (tonumber(fibaro:getValue(motion2, "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 = 45;
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(motion1, "value"))) > 0 or (tonumber(fibaro:getValue(motion2, "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

Hallo Andreas,
was für ein vorteil haben zwei Motion Sensoren?
Ist in diesem Script die Helligkeit (LUX) mit abgefragt?

Gruß
Drago

Bei mir funktioniert das:

–[[
%% properties
28 value
30 value
%% events
%% globals
–]]

local scene = 26 – ID dieser Szene
local motion = 28 – ID des Bewegungssensors
local licht = 30 – ID Lichtsensor
local switch = 37 – ID der Lampe
local starttimer = 10

---------------------Script-----------------
fibaro:debug(“start1”)
if (fibaro:countScenes()>1) then
fibaro:debug(“stop scene”);
fibaro:abort();
end

– SCHALTE LICHT EIN & AUS
if (tonumber(fibaro:getValue(28, “value”)) > 0 ) and tonumber(fibaro:getValue(30, “value”)) < 15
then
fibaro:debug(“ausgelöst”);
–led auf wert einstellen
fibaro:call(switch, “turnOn”);
– timer start und einstellen
timer = os.time();
while os.time() - timer < starttimer do
fibaro:sleep(1000);
– Timer zurücksetzen, wenn neue Bewegung erkannt wird innherhalb der Verzögerungszeit
if (tonumber(fibaro:getValue(28, “value”))) > 0 then
timer = os.time();
end
end
– Schalte Licht aus, wenn Timer vollständig abgelaufen ist
fibaro:call(37, “turnOff”);
end
fibaro:debug(“ende1”);
fibaro:killScenes(scene);

@Drago,
Ich schalte damit Licht auf der Treppe im Keller und die geht um die Ecke.
Mit nur einem Bewegungsmelder wurde das Licht sehr spät eingeschaltet wenn man von oben nach unten gegangen ist.

In dem Script wird die Helligkeit nicht abgefragt, macht bei mir auch keinen Sinn das es auch tagsüber in dem Bereich nie so richtig hell wird.

Das Script ist original das von Daniel nur um einen zweiten Motion Sensor erweiter.

Andreas

Danke für die Antwort.
Gruß
Drago

Hallo rk-design,
was funktioniert bei dir?
Ich habe gesehen das du ein Lichtsensor (local licht = 30 — ID Lichtsensor) mit eingebaut hast.
Der Wert 15 ist bestimmt der Wert für die Lux Angabe? Oder?
(if (tonumber(fibaro:getValue(28, “value”)) > 0 ) and tonumber(fibaro:getValue(30, “value”)) < 15)
Wo für soll diese Zeile sein? local starttimer = 10
Würde mich über eine Antwort freuen.
Werde das Script mal am Wochenende ausprobieren.

Gruß
Drago

Guten Morgen aus Schleswig Holstein!

Bei mir funktioniert es weder mit zwei MS, noch zuverlässig was die Helligkeitsgrenze angeht. Ich könnte mich aber damit zufrieden geben, wenn die Lampen im Dunkeln reagieren, wie z. B. nach Sonnenuntergang. Wie kann ich denn die Szene hier, SO umbauen, dass der Sunset als Parameter verwendet wird?

Viele Grüße

Christian

--[[
%% properties
906 value
%% globals
--]]
 
-- VARIABLEN Konfiguration (Bewegungsmelder muss oben unter %% properties aufgeführt sein) löst die szene aus
-----------------------------------------------------------------------------------------------------------------------------------------
local scene = 614 -- ID dieser Szene
local motion = 906 -- ID des Bewegungssensors
local licht = 908 -- ID Lichtsensor
local switch = 846 -- ID der Lampe
 
local nachtstart = 1700 --22:00 = 2200
local nachtende = 0900 -- 07:00 = 0700
local starttimer = 10 -- licht an zeit (+ zeit des bewegungssensors - par. 6)
local lichtwert = 0 -- grenze zum nachtmodus (nur ausführen, wenn licht größer als)
-----------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------
---------------------Script-----------------
fibaro:debug("start1")
if (fibaro:countScenes()>1) then
	fibaro:debug("stop scene");
	fibaro:abort();
end
 
-- SCHALTE LICHT EIN & AUS (wenn nicht nacht)
if (tonumber(fibaro:getValue(motion, "value")) > 0 ) and tonumber(fibaro:getValue(licht, "value")) > lichtwert and (tonumber(os.date("%H%M")) >= nachtstart or tonumber(os.date("%H%M")) <= nachtende) then -- hier fehlt noch "und schalter aus"
 	fibaro:debug("ausgelöst");
	--led auf wert einstellen
	fibaro:call(switch, "turnOn");
	-- timer start und einstellen
	timer = os.time();
	while os.time() - timer < starttimer do
		fibaro:sleep(1000);
		-- Timer zurücksetzen, wenn neue Bewegung erkannt wird innherhalb der Verzögerungszeit
		if (tonumber(fibaro:getValue(motion, "value"))) > 0 then
			timer = os.time();
		end
end
	-- Schalte Licht aus, wenn Timer vollständig abgelaufen ist
	fibaro:call(switch, "turnOff");
end
fibaro:debug("ende1");
fibaro:killScenes(scene);

Hallo,

zu dem Blog hätte ich auch noch eine Frage vielleicht kann mir da jemand bei dem Script etwas nachhelfen.
Folgendes Problem bei dem Script:
http://siio.de/lichtschatten/fibaro-szene-licht-solange-bewegung/
Szenario 1: Taster wird betätigt Licht geht an und bleibt an
Szenario 2: Taster wird betätigt Licht geht an, Bewegungsmelder wird aktiviert Licht geht nach Zeit x aus
Szenario 3: Bewegungsmelder wird aktiviert Licht geht nach Zeit x aus
Szenario 4: Bewegunsmelder wird aktiviert nachgetriggert Licht geht nach Zeit x+ Triggertime aus

für mich wäre folgendes Szenario noch wichtig weiß aber nicht wie es umgesetzt werden kann:
Taster wird betätigt Licht bleibt auch solange an bis es über den Taster oder die App ausgeschaltet wird, die Funktion mit dem Timer darf nur aktiviert werden wenn das Licht vorher aus war, ist das Licht schon darf die Szene nicht aktiviert werden. Mein Problem: bei mir funktioniert das ganze nicht mehr wenn der Bewegungsmelder die szene nachtriggert.

Gruß Michael

Hi,

Ich habe genau das selbe Problem. Ich möchte, dass das Licht an bleibt wenn ich es über einen Schalter angeschaltet habe. Ich kann es nicht mehr 100%ig sagen, aber ich glaube das hat schon mal funktioniert. Mir ist es jetzt nur bei einer neuen Szene aufgefallen.

Hat jemand eine Idee wie man das Lösen kann? Ich verwende das Licht&Schatten Script vom Blog.

Grüße
Stefan

Durch den Druck auf den Schalter (wenn Dimmer oö dahinter) könnte man durch die Szenenaktivierung eine variable setzen “manuell gedrückt”.
Diese Bedingung dann in das obige Script integrieren.
Mit dem Schalter aus, setzt die Variable wieder zurück.

Hi. Genau so hab ich es jetzt auch gelöst.

Ich habe eine Globale Variable angelegt, welche ich beim einschalten des Lichtes über den Motion Sensor auf 1 setze. Bevor der Timer startet prüfe ich ab, ob die Variable auf 1 ist. Am Ende des Skriptes setze ich diese wieder auf 0.

Es sieht so aus als würde es Funktionieren.

Stefan

Perfekt!