Blog Licht an solange Bewegung

Ich habe es!!!
Habe die Zeile einfach komplett rausgenommen und properties als Wort stehen lassen…

Danke für die schnelle Hilfe und schönen Feiertage!

Mit freundlichen Grüßen
Ivo Hennekes

Ich meine mal irgendwo gelesen zu haben das der Motionsensor auch eine Anwesenheitsfunktion hat.

Weil reine Bewegung ist zwar super, bleibe ich aber stehen und bewege mich nicht, geht das Licht aus.

Kann man auch zwei Szenen in einer haben ?

So das ich einmal RGB Beleuchtung habe für den Nachtmodus und für den Tagesmodus ab einem bestimmten LUX-Wert die Deckenleuchte angeht, das ganze dann in einer Szene …

Hallo,
Die Anwesenheitsfunktion ist soweit ich weiss ein Zähler mit 2 Motion-Eyes (einer auf jeder Seite der Türe). Damit kann man dann auswerten ob jemand rein oder raus geht. (http://www.fibarouk.co.uk/support/tutorials/counting-people-using-two-motion-sensors/)
Zum Thema mit Licht an und aus gibts schon einen Beitrag, mit Zeitfunktion, aber natürlich kann man auch mehrere dinge in einem LUA Script realisieren. hab sowas fürs Bad (anfangsscript war von hier http://siio.de/board/thema/blog-licht-an-solange-bewegung/) Hab im Bad Stimmungslicht (LED hinter Spiegel und Schrank) und ein Dimmer-Modul für die Decken Spots. Beim Betreten (Bewegung wird ausgelöst) schalten sich die LEDs ein und nach 3 Sekunden Dimmen die Spots auf einen bestimmte im Script eingestellte Helligkeit die bei Tag oder Nacht unterschiedlich ist. Aus geht das ganze nach einer bestimmten Zeit. Zusätzlich zähle ich mit wie oft der Timer zurückgesetzt wird. und nach meinetwegen 10 mal reset dimmt das licht heller.

Hier mal mein Script dazu (hoffe es Hilft):

--[[
%% properties
80 value
%% globals
--]]

-- VARIABLEN Konfiguration (Bewegungsmelder muss oben unter %% properties aufgeführt sein) löst die szene aus
-----------------------------------------------------------------------------------------------------------------------------------------
local scene = 21-- ID dieser Szene
local motion = 80 -- ID des Bewegungssensors
local licht = 83 -- ID Lichtsensor
local switch = 84 -- ID Dimmer
local spiegel = 42 -- ID Switch

local nachtstart = 2200 -- 22:00 = 2200
local nachtende = 0700 -- 07:00 = 0700
local starttimer = 120 -- 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("Start Badlicht")
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 (fibaro:getGlobalValue("AlarmSystem") == "Deaktiviert") then --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");
--Licht ein
fibaro:debug("Spiegel an - 3 Sek Wartezeit");
fibaro:call(spiegel, "turnOn");
fibaro:sleep(3000);
-----------NACHT-------------------------------------------------------
if (tonumber(os.date("%H%M")) >= nachtstart or tonumber(os.date("%H%M")) <= nachtende) then
fibaro:debug("Dimmer An auf 50");
fibaro:call(switch, "setValue", 40);
end
-----------TAG---------------------------------------------------------
if (tonumber(os.date("%H%M")) < nachtstart or tonumber(os.date("%H%M")) > nachtende) then
fibaro:debug("Dimmer An auf 70");
fibaro:call(switch, "setValue", 70);
end
------------------------------------------------------------------------
local a = 1 -- Variable für Zähler Hochdimmen auf Startwert
-- 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();
fibaro:debug("Bewegung Erkannt - Timer Reset");
a = a + 1
-----NACHTZEIT------------------------------------------------------------------------------------------------------------------------------------------------
if (tonumber(fibaro:getValue(a, "value")) == 10) and (tonumber(os.date("%H%M")) >= nachtstart or tonumber(os.date("%H%M")) <= nachtende) then
fibaro:call(switch, "setValue", 70); -- Hochdimmen bei x mal Ausgelöst
fibaro:debug("10x Ausgelöst - Dimmer Stufe 2");
end
if (tonumber(fibaro:getValue(a, "value")) == 20) and (tonumber(os.date("%H%M")) >= nachtstart or tonumber(os.date("%H%M")) <= nachtende) then
fibaro:call(switch, "setValue", 100); -- Hochdimmen bei x mal Ausgelöst
fibaro:debug("20x Ausgelöst - Dimmer Stufe 3");
end
-----TAGZEIT---------------------------------------------------------------------------------------------------------------------------------------------------
if (tonumber(fibaro:getValue(a, "value")) == 5) and (tonumber(os.date("%H%M")) < nachtstart or tonumber(os.date("%H%M")) > nachtende) then
fibaro:call(switch, "setValue", 85); -- Hochdimmen bei x mal Ausgelöst
fibaro:debug("5x Ausgelöst - Dimmer Stufe 2");
end
if (tonumber(fibaro:getValue(a, "value")) == 10) and (tonumber(os.date("%H%M")) < nachtstart or tonumber(os.date("%H%M")) > nachtende) then
fibaro:call(switch, "setValue", 100); -- Hochdimmen bei x mal Ausgelöst
fibaro:debug("10x Ausgelöst - Dimmer Stufe 3");
end
---------------------------------------------------------------------------------------------------------------------------------------------------------------
end
end
-- Schalte Licht aus, wenn Timer vollständig abgelaufen ist
fibaro:call(spiegel, "turnOff");
fibaro:call(switch, "turnOff");
fibaro:debug("Zeit abgelaufen - Licht Aus");
end
fibaro:debug("Ende Badlicht");
fibaro:killScenes(scene);

Der Motionsensor alleine wird nie 100% sicherstellen ob jmd im Raum ist oder nicht. Mit 2 Stk. wie oben beschrieben geht das schon eher. Ich habe es mit einem Türkontakt und einem Motionsensor realisiert:http://siio.de/board/thema/anwesenheits-check-mit-motion-sensor-tuersensor/
Mit diesem Script lässt sich einfach eine Variable mit entsprechenden Zustand setzen. Damit kann das Problem aus der welt geschafft werden, dass das Licht plötzlich aus geht wenn man z.B. eine Weile still sitzt

Gruß Daniel

Hallo AlexM, ich habe in meiner Küche eine ähnliche grafische Szene wie oben erstellt. Funktioniert soweit auch einwandfrei. Was muss ich noch machen dass das Licht dauerhaft abbleibt wenn ich den Lichtschalter (war vorher in Betrieb) einschalte?
Vielen Dank schon mal im Voraus.
Gruß Erich

Guten Morgen,

vielen Dank erst einmal für die äußerst hilfreichen Ausführungen hier, das Skript funktioniert bei mir einwandfrei. Ich bekomme es jedoch leider nicht hin, weitere Schalter, bzw. Lampen in das Skript zu integrieren. Müste ich die weiteren ID`s (Relay Switches) per Semikolon oder Komma trennen oder wie könnte es funktionieren 5 weitere Lampen zu integrieren?

Herzlicher Gruß
Finn

Guten Morgen,

die Szene funktioniert sehr gut, aber auch nur wenn sie funktioniert. Meistens funktioniert sie 1-2 Tage und dann nicht mehr. Dann muss ich erst die Sicherung des Systems raus nehmen. Nach dem erneuten Hochfahren funktioniert sie dann wieder TOP! Weiß jemand woran das liegt?

Danke schonmal

IVO

@Finn: Dort wo aktuell der witch steht, müssen weitere plaziert werden, zb switch2, switch3. Diese müssen dann im kopf auch wieder zugewiesen werden mit devive ID. @ivoo: Fibaro hat immer noch sehr viele Software Probleme. Da wirst du nur auf weitere Updates warten können. Du kannst auch mal unter Configuration-Diagnostics schauen, ob der CPU permanent belastet wird. Das Script sollte dies aber im normalfall nicht sein.

Gruß Daniel

Hallo könnte mir bitte jemand bei folgendem Script behilflich sein.
Und zwar könnte mir jemand zeigen wie ich folgende Dinge einprogramiere?

Kann man das Script so ändern das zb. der Nachtmodus um 17:00 an geht. Jedoch wenn der Lux - Wert um 16:30 im Vorraum schon unter 2 ist das, dass Licht trotzdem angeht?

Bzw was müsste ich rein schreiben das bei diesem Script…wenn ein Schalter betätigt wird das das Licht trotzdem nach einer Zeit aus geht und nicht das Script gestoppt wird.

Und könnte man folgendes machen…das von 17 - 20 Uhr ein bestimmter Dimmwert benutzt wird und ab 20:00 - 0700 ein anderer.

Ich verwende einen Dimmer.

Wäre super. wenn mir jemand behilflich sein könnte.

Danke

–[[
%% properties
154 value
%% globals
–]]

– VARIABLEN Konfiguration (Bewegungsmelder muss oben unter %% properties aufgeführt sein) löst die szene aus

local scene = 26 – ID dieser Szene
local motion = 154 – ID des Bewegungssensors
local licht = 156 – ID Lichtsensor
local switch = 43 – ID der Lampe

local nachtstart = 1700 --22:00 = 2200
local nachtende = 0100 – 07:00 = 0700
local starttimer = 10 – licht an zeit (+ zeit des bewegungssensors - par. 6)
local lichtwert = 5 – 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);

Heyho… sieht ziemlich cool aus… habe bisschen umständlicher gelöst.

Vielleicht noch als Idee:
Ich hab bei mir im Bad nen Dimmer verbaut, damit wenn ich nach 0 Uhr (ergo wenn nachts die Blase drückt) das Bad betritt er das Licht nur auf 20% dimmt…
dann fliegt man nicht rückwärts aus dem Bad wenn noch im Wachkoma-Modus ist…

lg
Joker

Hallo,

könnte mir jemand bei diesem script weiter helfen?

Hey dasbo,

Ich schaue mir das ganze heute abend an, wenn ich wieder einen ordentlichen PC mit Platz auf dem Bildschirm habe;-)
Deine Fragen bzw. Probleme sind alle kein großes Thema. Natürlich sollst du auch verstehen, wie es funktioniert. Ich werde es einfach mit ein paar Kommentaren im Script versuchen. Bis dahin.

Grüße

Daniel

Hi.

Wie kriege ich das ganze mit Zeitsteuerung hin, wenn ich 2 oder mehr Motion-Sensoren habe und beide nicht mehr aktiv sein dürfen, bevor das Licht gelöscht wird?

Vielen Dank und Gruss
Angelo

Einfache “Licht an solange Bewegung”-Scene mit weniger „Prozessorlast“.

Das Licht geht an bei Bewegung, solange Bewegung erkannt wird geht es nicht aus und nach der letzten erkannten Bewegung mit der (Fibaro Motion-Sensor im Parameter 6 (Standard=30s)) eingestellten Zeit wieder aus.

--[[
%% properties
xx value
%% globals
--]]

local startSource = fibaro:getSourceTrigger();

if tonumber(fibaro:getValue(xx, "value")) > 0
then fibaro:call(yy, "turnOn");
elseif tonumber(fibaro:getValue(xx, "value")) == 0
then fibaro:call(yy, "turnOff");
end

–xx = ID Fibaro Motion Sensor
–yy = ID Schalter

Hallo, ich bräuchte sowas ähnliches für meine Raffstore.
Wenn es sonnig ist, sollen sie die Lammellen auf 50% fahren und dann dort so lange bleiben bis es bewölkt ist oder dunkel wird.
Ich habe dazu einen Zeitraum definiert, soweit fahren sie auch runter. Das HC2 startet aber die Szene ca alle 2 min neu. Deshalb habe ich probiert eine Zeitverzögerung einzubauen. das funktioniert aber auch nur begrenzt, da es sich gegebenenfalls mit meiner Sonnenuntergangs Szene überschneidet.
Hat jemand eine Idee?
Das ist mein script:

--[[
%% autostart
%% properties
12 value
10 value
26 value
30 value
34 value
24 value
32 value
28 value
38 value
3 WeatherConditionConverted
%% globals
Tageszeit
--]]

local startSource = fibaro:getSourceTrigger();
if (
( fibaro:getGlobalValue("Tageszeit") == "Sunrise" and fibaro:getValue(3, "WeatherConditionConverted") == "clear" and tonumber(fibaro:getValue(12, "value")) <= 10 and tonumber(fibaro:getValue(10, "value")) <= 10 and tonumber(fibaro:getValue(26, "value")) <= 10 and tonumber(fibaro:getValue(30, "value")) <= 10 and tonumber(fibaro:getValue(34, "value")) <= 10 and tonumber(fibaro:getValue(24, "value")) <= 10 and tonumber(fibaro:getValue(32, "value")) <= 10 and tonumber(fibaro:getValue(28, "value")) <= 10 and tonumber(fibaro:getValue(38, "value")) <= 10 )
or
startSource["type"] == "other"
)
then
fibaro:call(12, "setValue2", "0");
fibaro:call(10, "setValue2", "0");
fibaro:call(26, "setValue2", "0");
fibaro:call(30, "setValue2", "0");
fibaro:call(34, "setValue2", "0");
fibaro:call(24, "setValue2", "0");
fibaro:call(32, "setValue2", "0");
fibaro:call(28, "setValue2", "0");
fibaro:call(38, "setValue2", "0");
fibaro:call(12, "setValue2", "50");
fibaro:call(10, "setValue2", "50");
fibaro:call(26, "setValue2", "50");
fibaro:call(30, "setValue2", "50");
fibaro:call(34, "setValue2", "50");
fibaro:call(24, "setValue2", "50");
fibaro:call(32, "setValue2", "50");
fibaro:call(28, "setValue2", "50");
fibaro:call(38, "setValue2", "50");
setTimeout(function()
fibaro:call(12, "setValue2", "100");
fibaro:call(10, "setValue2", "100");
fibaro:call(26, "setValue2", "100");
fibaro:call(30, "setValue2", "100");
fibaro:call(34, "setValue2", "100");
fibaro:call(24, "setValue2", "100");
fibaro:call(32, "setValue2", "100");
fibaro:call(28, "setValue2", "100");
fibaro:call(38, "setValue2", "100");
end, 300000)
end

Vielen Dank im Voraus

Hey Alex280181,
ich würde dir versuchen zu helfen aber ich brauche mehr details. was sind die einzelnen values bei property und was genau soll wann passieren?

grüße

daniel

Die Idee von Fibario ist an sich nicht schlecht. Das mit der CPU Last kann ich nicht beurteilen, ich glaube aber “waits” verbrauchen nicht wirlich cpu resourcen. Nachteil hier ist, dass man wenig flexibilität hat. die zeit muss im value des sensors geändert werden usw.

viele grüße

daniel

Hallo, als LUA-Anfänger brauche ich eure Hilfe :slight_smile:

Ich bin gestern vom HCL auf die HC2 umgestiegen. Bisher war es so, dass ich meinen LED Strip in der Küche bei Bewegung UND Dunkelheit (unter definiertem Lux Wert) ausgelöst habe. Das ging mit der HCL ganz gut, nur würde ich das ganze jetzt gern in LUA packen, damit das Licht nicht immer wieder ausgeht…Könnt ihr mir bitte helfen. :wink:

Danke!!!

Hi, ist es möglich das Script um einen zweiten Motion Sensor zu erweitern?
Bei mir ist die Treppe zum Keller etwas verwinkelt, sodass ich einen zweiten Motion Sensor nachgerüstet habe.

Andreas

Hallo zusammen!

Ich habe hier ein Problem! Bei mir zeigt der Lichtsensor “0” an (es ist auch dunkel) und das Licht geht bei Bewegung nicht an. Vielleicht stehe ich auch heute komplett auf dem Schlauch, aber in der Zeile kann ich doch einen Grenzwert einrichten? Aber für was? Ich kann damit doch einstellen, wenn es heller als der eingestellte Wert ist, soll die Szene zeitgesteuert auslösen, richtig…?

local lichtwert = 5 – grenze zum nachtmodus (nur ausführen, wenn licht größer als)