Licht oder RGB zu bestimmten Zeiten an solange Bewegung

Ich würde gerne folgendes machen.

Zwischen 16:00 Uhr und 19:00 Uhr soll meine Deckenbeleuchtung (Relais-Switch) im Flur angehen und ab 19:00 Uhr bis 07:00 Uhr meine RGB Beleuchtung (RGB-Switch). Alles nur bei Bewegung.
Das ganze über einen Motionsensor.
Und wenn Möglich das ganze noch über eine bestimmte LUXzahl.(zumindest bei der Deckenbeleuchtung)

Jetzt habe ich folgendes Skript genommen:

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

Und habe dieses gespeichert… funktioniert auch soweit… aber wenn ich die selbe Szene kopiere und nochmal für die Deckenleuchte nehme und die Zeiten änder und natürlich die ID geht die Deckenleuchte immer an egal was ich für eine Uhrzeit eingestellt habe. Oder es gehen beide Leuchten an, obwohl sie unterschiedliche Uhrzeiten eingestellt haben.

Normalerweise kann ich doch hiermit:

local nachtstart = 1600 – 22:00 = 2200 ( was haben die 2200 zu bedeuten ???)
local nachtende = 1900 – 07:00 = 0700 ( was haben die 0700 zu bedeuten ???)
local starttimer = 10 – licht an zeit (+ zeit des bewegungssensors - par. 6)
local lichtwert = -1 – grenze zum nachtmodus (nur ausführen, wenn licht größer als)

die Zeite festlegen oder nicht ??

1600 bis 1900 bedeutet doch das Ganze oder nicht ???

Wo liegt mein Fehler?

Prinzipiell hast du alles richtig gemacht. Es ist eine kleine änderung nötig, denn aktuell steht WENN größer als 16 ODER kleiner als 19 Uhr. (Diese Bedingung ist IMMER erfüllt!)
Du musst also in WENN größer 16 UND kleiner 19 ändern:
and (tonumber(os.date("%H%M")) >= nachtstart or tonumber(os.date("%H%M")) <= nachtende)
ändern in … and (tonumber(os.date("%H%M")) >= nachtstart and tonumber(os.date("%H%M")) <= nachtende) (bei der 16-19 Variante)

1600 steht für 16:00 und muss als ganze Zahl in der Variable stehen, da nirgendwo im Script konvertiert wird.

Viele Grüße

Daniel

Habe jetzt mal beide Szene erstellt

Led Flur:

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

Deckenbeleuchtung Flur:

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

Deckenbeleuchtung ging bis 19:00 Uhr jedoch ab 19:00 Uhr sollte ja die RGB angehen tut Sie nur nicht Flur bleibt dunkel.

Deckenbeleuchtung bleibt wie gewünscht aus.

Wo liegt mein Fehler ??

Bei der 19 bis 7 kein AND sondern OR, wie gehabt.

Super jetzt geht es.

Vielen Dank

Bei mir läuft die Szene nicht, wenn ich die genau so kopiere und mit meine ID fülle, kommt folgende Meldung:

[DEBUG] 18:53:41: [1;31m2015-11-26 18:53:41.977257 [ fatal] Runtime error: /opt/fibaro/scenes/109.lua:21: unexpected symbol near ‘&’[0m

Poste doch mal deine Szene

Moin Daniel!

1.Kann man in das Script noch eine Abhängigkeit einbauen? Wenn z.B. der Lichtschalter manuell betätigt wird, dass das Licht an bleibt?
2. Kann ich den LEDs sagen, wenn ich Sie ab einer bestimmten Uhrzeit, sagen wir mal, nur mit 10% leuchten lassen will und bei Bewegung auf 100% gehen?

Viele Grüße

Christian

Hallo Daniel!

Ich muß sagen,…ich habe ein bißchen gebastelt und bin ganz stolz auf mich:-)! Ich habe erstmal Szenen graphisch erstellt und sie dann in LUA umgewandelt, mir das passenden Teil raus gesucht und siehe da…meine LEDs (RGB) dimmen auf den gewünschten Helligkeitswert. juuuchuuu

fibaro:call(switch, “turnOn” and “setBrightness”, “10”);

Allerdings verzweifle ich an der “Farbe”! Da klappt das obige Spiel leider nicht. Ich möchte gerne, dass meine LEDs im Treppenhaus immer mit der gleichen Farbe starten. Und ich habe unter der obigen Zeile, das hier in mehreren Varianten probiert:

fibaro:call(switch, “setB”);

Aber aus irgendeinem Grund, gehen die LEDs immer in der zuletzt aktiven Farbe an…

Was mache ich falsch? Und wie kann ich die Kommandozeilen hier so posten, dass sie wie Eure oben “erscheinen”?

Viele Grüße

Christian

HI

damit die Scripte wie oben erscheinen, musst Du den “code”-Button (vorletzter) über dem Textfeld einmal am Anfang und nach dem Einfügen am Ende des Scriptes drücken.

VG Hoggle

Hi,

die Farbe kannst du bei RGBW so setzen:

fibaro:call(ID, "setColor", "255", "0", "0", "255")

In der Reihenfolge Rot, Grün, Blau, Weiß. Musst nicht anschalten, wenn diese vorher aus waren.

Gruß

Guten Morgen Hoggle und Daniel!

Ich habe es jetzt so eingesetzt, sprich der Szene angepasst. Es soll blau leuchten:

fibaro:call(switch, "setColor", "0", "0", "255", "0")

Mal gucken ob das klappt - und auch das mit dem “Code posten”! :wink:

Viele Grüße

Christian

Ok. Das mit dem Posten klappt schon mal:-)

Jetzt habe ich noch eine kleine Frage. Ich verwende den Fibaro-Motion Sensor. Und diese zeigt mir immer den falschen LUX-Wert an. Ich habe ihn schon zurück gesetzt, den Parameter 9 auf “1” geändert, ihn danach "geweckt"und trotzdem stehen hier immer falsche Werte, bzw. bei Tageslicht eine “null”!

Das macht so eine Szene ziemlich unzuverlässig, da auch tagsüber das Licht eingeschaltet wird.

Gibt es Werte, die standardmäßig geändert werden sollten? Bzw. Muß ich bei den Assoziationen etwas ändern?
Bewegungen erkennt er zuverlässig…

Viele Grüße

Christian

Schau mal hier:

http://siio.de/lichtschatten/fibaro-motion-eye-empfindlichkeit-der-helligkeit-einstellen-lux/

Hatte ich vorher schon gelesen. Aber irgendwie funktioniert dieser Mot.Sens. nicht zufriedenstellend. Nur wenn ich ihn wecke, zeigt er den aktuellen Luxwert an. Für eine LUX-basierte Szene nicht so doll.

Ich probiere einfach mal weiter. Morgen schmeiße ich ihn nochmals raus und inkludiere ihn dann wieder…

Hallo zusammen!

Ich habe mit Daniels Hilfe die Szene für die RGB-LED-Beleuchtung so anpassen können, dass die LEDs mit der gewünschten Farbe und in der vorgegebenen Helligkeit angehen.

Hier, zur weitern Verwendung:

--[[
%% properties
681 value
%% globals
--]]

-- VARIABLEN Konfiguration (Bewegungsmelder muss oben unter %% properties aufgeführt sein) löst die szene aus
-----------------------------------------------------------------------------------------------------------------------------------------
local scene = 550 -- ID dieser Szene
local motion = 681 -- ID des Bewegungssensors
local licht = 683 -- ID Lichtsensor
local switch = 658 -- ID der Lampe

local nachtstart = 1900 --23:00 = 2300
local nachtende = 0830 -- 07:00 = 0700
local starttimer = 10 -- licht an zeit (+ zeit des bewegungssensors - par. 6)
local lichtwert = 1 -- 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");
  	fibaro:call(switch, "setColor", "0", "0", "255", "0");
  	fibaro:call(switch, "setBrightness", "10");
  
	-- 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);

Danke Daniel.

Viele Grüße

Christian

Hi,

also geht das mit dem LUX-Wert jetzt?

Gruß

Guten Morgen Daniel!

Man man man,…im Moment frühstücke ich eher mit Euch als mit meiner eigenen Familie! :-DDD

Leider im Moment noch nicht zufriedenstellend.

Oder warte, ich gucke nochmals. Komisch, jetzt geht´s! Vielleicht war ich zu ungeduldig.

Sag mal Daniel. Wenn ich möchte, dass die LEDs ab einem bestimmten Luxwert mit 10% angehen und bei Bewegung auf 100% gedimmt werden. Nach Ablauf der Schleife sollen sie wieder auf die 10% “herunterfahren”…welche Codezeilen muß ich dabei austauschen?

Ich habe eine Szene als “Block” erstellt und sie dann in LUA umgewandelt…

local startSource = fibaro:getSourceTrigger();
if (
 ( tonumber(fibaro:getValue(licht, "value")) < 10 )
or
startSource["type"] == "other"
)
then
	fibaro:call(switch, "setBrightness", "10");
	
end

Ich Depp!

Jetzt funktionierts! Wißt Ihr, ich lese die ganze Zeit mit und setze die ganzen Tips gewissenhaft um und habe weiter oben auch von der AND - OR - Problematik gelesen und es auch umgesetzt. Aber durch meinen dämlichen Copy-Paste ist aus dem OR wieder ein AND geworden.Und nichts hat mehr funktioniert.

Jetzt: Geändert! LÄUFT!!!

Man man man Christian,…manchmal…

Viele Grüße :slight_smile:

Christian

Hallo zusammen nochmals!

Kann ich in die Szene einen zweiten Bewegungsmelder integrieren? Wenn ja, was muß ich ändern?

Viele Grüße

Christian