Manchmal sind feste Zeitintervalle in denen das Licht an ist nachdem der Bewegungsmelder ausgelöst hat sehr unpraktisch. Hier ein LUA Script bei welchem das Licht an bleibt bis keine Bewegung mehr präsent ist.
Eine einfache Schaltung "Licht an WENN Bewegungssensor" ausgelöst hat ist schnell in der Fibaro Szene zusammengebaut. Natürlich kann man hier auch mit Verzögerungswerten arbeiten, um das Licht nach einer bestimmten Zeit wieder auszuschalten.
Das könnte dann so aussehen:
Nur ist dies meistens sehr unpraktisch wenn der Junior vielleicht mal wieder länger gebraucht hat beim Schuhe zubinden, schwups steht die Familie im dunklen Flur. Besser wäre natürlich, wenn das Licht solange an bleibt wie eine Bewegung erkannt wird und erst wenn keine Bewegung mehr erkannt wurde, das Licht ausgeschalten wird.
Zunächst einmal an dieser Stelle ein großes Dankeschön an Simon, der mir das folgende Script zur Verfügung gestellt hat. Ausserdem ein Dankeschön an alle User die in unserem Fibaro Forum schon einige nützliche Scripte gepostet haben.
Ich habe bei uns in der Maisonette Wohnung ein LED Stripe hinter das Treppengeländer gebaut und möchte dieses als Treppenbeleuchtung nutzen wenn jemand die Treppe hoch oder herunter geht. Dazu habe ich ein Fibaro Motion Eye montiert und kann nun das Treppenlicht eingeschalten lassen, solange sich jemand im Aufgang befindet.
Licht an bei Bewegung, solange Bewegung
Zunächst legst du eine neue Szene in deinem Fibaro Home Center 2 an. Für diese wählst du LUA Code aus.
Kopiere das folgende Beispiel in den LUA Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
--[[ %% properties 30 value %% globals --]] -- VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein) local scene = 1 -- ID dieser Szene local motion = 30 -- ID des Bewegungssensors local switch = 9 -- 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 = 900; 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 |
Die im Script rot markierten Variablen musst du durch die IDs deiner Sensoren und Aktoren ersetzen. Beginnend im Bereich der %%properties. Hier musst du, sowie auch an der Stelle: "local motion = X" die ID deines Bewegungsmelders einfügen. An die Stelle "local switch = " fügst du die ID des Relai, der Schaltsteckdose oder des RGB Moduls ein, welches bei einer erkannten Bewegung eingeschalten werden soll. Die ID´s der Geräte findest du auf der Weboberfläche des Home Center, wenn du in die Einstellungen des jeweiligen Gerätes gehst.
Bei local Scene fügst du die ID deiner eben erstellten Szene ein. Wenn du dir unsicher bist, welche ID die Szene erhalten hat, speichere diese ab und gehe zurück in die Übersicht der Szenen. Klicke im Firefox mit der rechten Maustaste auf das Einstellungssymbol und dann auf "Element untersuchen" die ID findest du im Link.
Was macht diese Szene?
Durch die ID des Bewegungsmelders im Bereich %%properties, wird diese Szene durch den Motion Sensor (oder vergleichbaren Bewegungsmelder) ausgelöst.
Innerhalb einer Schleife startet ein Timer, im Beispiel von 900 Sekunden (15min). Wird eine Bewegung innerhalb dieser Zeit erkannt, beginnt der Timer von vorn zu zählen. Läuft der Timer ab, da keine Bewegung mehr präsent ist, so wird das Licht ausgeschalten.
Genau genommen kommen zu den 900 s noch die in Parameter 6 des dazugehörigen Bewegungssensors eingestellte Zeit (standardmässig 30 s) hinzu.
Licht an bei Bewegung, egal welcher Schalter
Im vorangegangenen Beispiel wurde die Szene durch den (in meinem Beispiel) Fibaro Motion gestartet. Heißt, wurde das Licht über einen Wandschalter oder die Fibaro App eingeschalten, hatte dies keinen Einfluss auf die Szene. Das Licht bleibt an, auch wenn keine Bewegung mehr präsent ist. Hier nun noch ein LUA Script, welches es erlaubt das Licht über jeden beliebigen Weg einzuschalten. Die Szene schaltet das Licht nach der definierten Zeit aus, wenn keine Bewegung mehr vorhanden ist. Super vor allem für den Flurbereich find ich.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
--[[ %% properties 30 value 9 value %% globals --]] -- VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein) local scene = 1 -- ID dieser Szene local motion = 30 -- ID des Bewegungssensors local switch = 9 -- 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 = 900; 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 |
Auch hier musst du natürlich die IDs der Geräte auf die Werte deiner Komponenten anpassen. Im Kopfbereich bei %%properties ist nun noch die ID des zu schaltenden Relais, bzw. der Steckdose, Zwischenstecker, RGB Modul oder was auch immer du schalten möchtest hinzugekommen.
[button type="link" link="http://siio.de/board/thema/blog-licht-an-solange-bewegung/" size="btn-medium"]Diskussion zu diesem Thema im Forum[/button]
Super Anleitung nur wie bekomme ich das auch mit dem HCL hin ?
Hey,
ohne LUA habe ich dazu grad keine Lösung parat. Vielleicht lässt sich was mit Variablen machen? Am besten mal in die Runde fragen, in unserem Fibaro Forum.
Hallo,
ich habe das im HCL mittels zweier Szenen und einem Fibaro Motion Sensor realisiert:
Szene 1: Licht an, wenn Sensor "breached/ ausgelöst"
Szene 2: Licht aus, wenn Sensor "safe/ sicher"
Nun geht bei mir das Licht an, wenn ich in den Raum betrete und zumindest dämmrig ist, und aus nach 3 Minuten, nach dem keine Bewegung mehr festgestellt wurde und der Sensor "safe / sicher" an HCL gemeldet hat
Im Motion Sensor habe ich den Paramter 8 auf "active during night", Parameter auf "200 Lux" und den Parameter 6 auf "180 sec".
ahhh! sehr gute Idee. Vielen Dank für die Lösung! Gibt auch einen offenen Thread im Forum von tilo hier.
Vielen Dank für deine Antwort, dies löst das Problem mit der HCL.
Ich habe das Zusammenspiel zwischen Fibaro Motion Sensor und dem Fibaro Relais Switch noch vereinfach, obwohl mit obigen Szenen alles wie gewollt funktioniert .
Ich habe den Relais Switch der Assoziationsgruppe 1 des Motion Sensors hinzugefügt, Szenen gelöscht und wieder funktioniert alles wie vorher.......nur wesentlich schneller.
sehr gute idee eine Direktverknüpfung zu erstellen. Dann müsste das Licht (mit den Standardeinstellungen des Motion) noch 30sek. nach der zuletzt erkannten Bewegung anbleiben oder?
Hallo,
Hab ein problem mit dem Timer im Script, (HC2 / Firmware 3.590)
der Timer läuft egal was für eine Zeit ich eingebe immer eigentlich gleich schnell (kurz ab) hab jetz schon mal 500000 (müssten ja sekunden sein wenn ich richtig liege) reingeschrieben, nach ca 1 minute is er Abgelaufen (laut debugging) und das Licht wird auch ausgeschalten. Muss ich den Timer noch irgendwo Einrichten / Konfigurieren?
oder woran könnte das liegen?
hey,
schau mal bei uns im Forum (link) dort hat Daniel das Script etwas ausgebaut. Kopiere dieses mal 1:1 und passe deine Variablen entsprechend an. Vielleicht funktioniert es damit besser? Freu mich über dein Feedback!
Hallo,
und Danke, schau ich mir gleich mal an, den Fehler mit kurzen zeiten hab ich gefunden.
Hab noch eine szene "Alles aus - Licht" da war versehentlich der haken mit HC2 starten angewählt.
jetzt hab ich das entgegengesetzte problem dass das licht gar nicht mehr ausgeht.
aber werde mir gleich mal das script auf dem link oben anschaun.
Danke für den Hinweis mit dem Link oben zu dem verbesserten Skript, hab es für meine Zwecke abgeändert, (Helligkeit und Nachtzeit benötige ich nicht - habe ich Entfernt).
Funktioniert damit Perfekt und so wie ich es mir Vorstelle.
Danke für den Tipp
super, klasse ! Vielen Dank für dein Feedback.
Hallo,
eine Frage noch, gibt es irgendwo eine Doku über die ganzen Fibaro LUA Befehle oder so was ähnliches, wäre Hilfreich.
Hab schon danach gesucht aber leider noch nicht wirklich was gefunden.
Danke schon mal
Hallo,
scheinbar gibt es sowas leider noch nicht. Alex hat daher in unserem Forum einen Thread angelegt, in welchem alle LUA Befehle gesammelt werden. Schau mal hier: siio- Fibaro Forum - LUA Hilfe / Befehle
Hallo,
Ich habe dem Fibaro-Motion Sensor bei mir zuhause und will genau diese Problematik umsetzen. Die beiden Szenen sich funktionieren, allerdings kann ich die Parameter immsensor nicht anpassen. Wenn ich auf Einstellung/erweitert gehe und dort zB die Empfindlichkeit des Lichtsensors oder die Zeit bis zur Sicherung einstellen will, dann zeigt es mir nach dem Klick auf den Speicherbutton rechts an auf welchen Wert ich den Parameter zuletzt gesetzt habe aber wirklich ändern tut sich nichts. Wenn ich das Template ausschalte steht da dann immer so was der Wert und dahinter undefined. Kann mir jemand sagen, was ich da falsch mache? Danke
Hi,
du musst den Motion Sensor nach dem Ändern der parameter im HCL nocheinmal wecken. Dazu einfach wieder in Nähe des Home Center mit dem Motion gehen und 3x die Anlerntaste drücken.
Vielleicht hilft dir dieser Beitrag: Fibaro Motion Eye – Empfindlichkeit der Helligkeit einstellen (LUX)
Perfekt, danke! Genau das wars. Ist natürlich nicht sonderlich praktisch, dass man den Motion Sensor jedes Mal "ausbauen" muss, wenn man was daran verändern will, aber das kommt ja hoffentlich eher selten vor.
bei mir hab ich parameter 6 auf 5 sec gestellt und bin auf speichern gegangen,er hat mir oben denn angezeigt,Parameter 6 = 5sec
Hallo,
was genau muss ich denn mit der ID erstezen? Nur properties? Und was bei Local motion?
Bei mir ist die ID der Szene nur eine Zahl und nicht ein Link wie oben beschrieben... Brauche HILFE! Licht geht gar nicht mehr an...Und es wäre ein unbekanntes Zeichen in Linie 7 near "<"..
Danke schonmal.
Hallo,
folgendes ist zu ersetzen:
Im Kopf bei Value gehört die ID des Bewegungssensors hinein, genauso bei local motion. Im Beispiel =30
Die local Scene ist die ID der Szene und ist nur eine Zahl
Der local switch ist die Steckdose, oder Unterputz Relai welches dann geschalten wird.
Habe gerade gesehen das es mir im Blog total die Formatierung vom Script zerhauen hat.
Kopier es dir bitte aus unserem Forum hier: siio- Fibaro Forum – LUA Hilfe / Befehle
Ich korrigiere morgen mal den Blogeintrag.
Danke für den Hinweis. Bei weiteren Fragen auch gern im Forum, dort kann man es mit Bildern und Scripten besser erklären.
Kann man auch die Lux(Helligkeit)des Motion Sensors für das Licht einschalten berücksichtigen?
Hallo,
ja natürlich lässt sich das in der LUA Szene auch integrieren. Schau mal im Forum in den Thread: Thema Blog Licht an solange Bewegung (link)
Dort findest du ein paar Ideen und Erweiterungen für das Script - unter anderem auch eine Möglichkeit den LUX Wert zu berücksichtigen.
Bei Frageb stell Sie gern in der Community. Gern auch fragen zur Programmierung.
Hallo Criss,
habe versucht in den Scribt die Schaltung von einem Lux Wert abhängig zu machen. Klappt nur leider nicht. Die Lichtschaltung soll natürlich nur ausgelöst werden wenn draußen dunkel.
Habe das genommen und vor "lösche doppelte Scene" eingefügt:
local lux = 93-- ID of Luxsensor
local luxgrenze = 30
Weist du was ich falsch gemacht habe?
Gruß Heiko
Hi,
einfach eine lokale Variable zu erstellen, bringt nichts ;) Die musst du dann im Code natürlich zusätzlich noch abfragen.
Gruß
Hallo,
kann leider kein lua programmieren. Gibt es das irgendwo schon das ich es mittels copy / paßt einfügen kann? Würde doch Sinn machen in dem Script?!
Danke und Gruß Heiko
Ja, das funktioniert mit der perfekten Lichtsteuerung:
https://www.siio.de/lichtschatten/die-perfekte-lichtsteuerung-mit-fibaro-lua-update-1/
Hallo Zusammen,
kann ich mit meinem Motion Sensor die Rolladen steuern indem diese bei einer starken Helligkeit (z.B.: 2000Lux) die Rolläden soweit herunterfährt bis der Motion Sensor nur noch eine Helligkeit von ca. 750Lux mißt? Quasi Automatisches Abfahren von Jalousie/Rollladen nach Überschreiten eines eingestellten Helligkeitswertes um die Möbel vor direkter Sonneneinstrahlung zu schützen und/oder das Aufwärmen durch die Sonneneinstrahlung zu verhindern????
Danke an Euch
Hallo,
die Jalousie durch den Roller Shutter 2 herunter fahren mithilfe des gemessenen LUX Wertes geht auf jedenfall. Wenn du den Motion Sensor so einstellst das er sehr “Empfindlich” ist und jede Änderung sofort überträgt müsst auch deine zweite Anforderung gehen, das der Shutter stoppt sobald LUX Wert X erreicht wurde. Dies wird aber sicher auf die Batterie des Motion gehen, da er häufig Werte übertragne muss.
Hallo,
ich wollte die Szene so anpassen, dass das Licht nur per Schalter eingeschatlet werden kann und dann der Rest wie im Origal funktioniert.
Meine Änderung:
--[[
%% properties
9 value
%% globals
--]]
-- VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein)
local scene = 1 -- ID dieser Szene
local motion = 30 -- ID des Bewegungssensors
local switch = 9 -- 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(switch, "value"))) < 1 then
...der Rest wie gehabt.
Das Ergebnis war, dass nach dem ich manuell das Licht eingeschaltet habe, der Timer gestartet wurde und bei Bewegung auch verlängert wurde, jedoch als das Licht ausgehen sollte, ging es nur kurz aus und dann gleich wieder von allein an.
Habe ich etwas bei meiner Änderung vergessen?
Also das Problem mit dem manuellen Ausschalten habe ich auch. Ich benutze hier einen Taster.
Muss man hier ggf. etwas beachten?
Wenn ich am Taster drücke, geht auch bei mir kurzzeitig das Licht aus und dann wieder an. Im Debugger erscheint sofort wieder die Meldung: [DEBUG] 09:30:54: Schalte Licht ein
Hallo zusammen
Das Script funktioniert sehr gut, allerdings beendet es andere, laufende Scripts durch den Befehl:
if (fibaro:countScenes()>1) then
fibaro:abort();
end
Kann ich meine von HC2 automatisch gestarteten Szenen nach dem Script wieder laden lassen?
Hi,
nein, das kann nicht sein. Der Befehl bezieht sich nur auf die laufende Szene und kann keine Auswirkungen auf andere Szenen haben. Hier scheint es ein anderes Problem (z.B. den Alarmmodus) zu geben.
Gruß
Hallo wollte Szene anpassen mit 2 Relais ,
Problem ist die Lampen gehen beide an aber nur eine geht nach Ablauf des timers aus !
oder habe ich script falsch ergänzt ?
Gruß Manuel
--[[
%% properties
42 value
%% globals
--]]
-- VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein)
local scene = 100-- ID dieser Szene
local motion = 42 -- ID des Bewegungssensors
local switch = 94 -- ID des Relay Switches
local switch = 96 -- ID des Relay Switches
Hi,
du musst dem Skript noch weiter unten im Skript sagen, was er mit der ID machen soll. Such mal nach fibaro:call() und duplizier den Punkt.
Und 2 Variablen müssen unterschiedlich benannt sein ;)
Gruß
Danke BOOMX
bin noch sehr unerfahren mit dem LUA Script
habe es aber hinbeckommen :-)
Gruß
--[[
%% properties
42 value
%% globals
--]]
-- VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein)
local scene = 100-- ID dieser Szene
local motion = 42 -- ID des Bewegungssensors
local switch = 96 -- ID des Relay Switches
local switch2 = 94 -- 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"))) 0 then
local starttimer = 120;
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"))) 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:call(switch2, "turnOff");
fibaro:debug("Timer abgelaufen/Schalte Licht aus");
fibaro:killScenes(scene);
end
Hi
Habe jetzt zum ersten mal mit LUA gearbeitet und hab das mal von oben kopiert und eigetragen,funktioniert einwandfrei.
Wo finde ich die ID von meinem Handy was ich im HC2 angegeben hab??
wollte es mal mit einer push nachricht probieren und gucken ob es funkt das,wenn das Licht an ist ich eine Nachricht bekomme =)
Hi,
kannst du über die API rausfinden. Ruf dazu http://HC2-IP/api/devices
Dort suchst du dann nach dem Namen von deinem iPhone. ID ist dann die ID des Handys.
Gruß
besten dank =)
greetz
Hallo zusammen,
Vielen dank für das tolle Script. Ich habe mir erst neu ein Fibaro HC bestellt und bin noch ein wenig unerfahren. Ich habe mir anstatt dem Fibaro Motion Sensor den Multisensor Aeon Labs ZW100 geholt. Dieser funktioniert seit dem letzten Update 4.070 ohne Probleme. Vorher hatte ich Probleme mit der Bewegungserkennung im Batterienbetrieb. Jetzt würde ich gerne das Script auf den ZW100 anwenden. Leider funktioniert das nicht richtig da ich beim ZW100 Motion Sensor den Parameter 6 nicht habe. Der Parameter 3 scheint aber die ähnliche Funktion zu sein http://www.benext.eu/static/manual/aeotec/multisensor-6-ZW100-C.pdf auf Blatt 7. Ist es möglich im Script die Variable für Parameter 3 vom ZW100 zu verwenden und was müsste man ändern? Vielen Dank für eure Hilfe. Gruss Bucco
Hallo,
ich habe noch etwas verständniss Prbbleme mit dem Script Beispiel 1:
Das Licht wird über einen Schalter eingeschaltet und geht aus wenn der Schalter wieder betätigt wird oder das Script angetriggert wird, ich wollte das Script so abändern das: wenn der Schalter betätigt wird es auch nur durch den Schalter wieder ausgeschaltet werden kann d.h. es soll erkannt werden ob das Licht vor der Bewegung schon an war.
Mein Problem: Wollte es mit einer if Schleife lösen habe aber das Problem wenn das Script durch den Bewegungsmelder getriggert wird funktioniert es nicht mehr.
Gruß
Hallo, danke für diesen guten Beitrag. Ich habe nur ein kleines Problem... ich habe einen zweiten "Bewegungsmelder" wie bzw. an welcher Stelle in diesem Script binde ich diesen mit ein?
Vielen Dank schon einmal für einen "Anfänger" :-)
Hi,
schau dir doch mal das folgende Skript an. Dort kannst du 2 oder auch mehrere MotionSensoren einbinden :)
https://www.siio.de/connected-home/kleine-lua-scripte-teil-5-bewegung-im-raum-erkennen/
Gruß
Hallo, danke für deinen Link. Aber da verstehe ich zur Zeit noch "Bahnhof"...
Ich bin leider "noch" zu unerfahren mit LUA und habe schon einmal etwas experimentiert aber leider ohne Erfolg. Mein zweiten Bewegungsmelder habe ich eingetragen ... "motion2" siehe unten:
--[[
%% properties
68 value
62 value
105 value
%% globals
--]]
-- VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein)
local scene = 12 -- ID dieser Szene
local motion = 68 -- ID des Bewegungssensors
local motion2 = 105 -- ID des Bewegungssensors
local switch = 62 -- ID des Relay Switches
........
-- SCHALTE LICHT EIN & AUS
if (tonumber(fibaro:getValue(motion, "value")) > 0 ) and (tonumber(fibaro:getValue(switch, "value"))) 0 ) and (tonumber(fibaro:getValue(switch, "value"))) < 1 then
fibaro:call(switch, "turnOn");
fibaro:debug("Schalte Licht ein");
end
Hi,
so wird es eher schwer. In dem von mir gerosteten Skript musst du nur in dem Array & in dem Header die beiden Bewegungsmelder eintragen. Ist eigentlich in dem Artikel alles erklärt, in deinem Skript müsstest du zu viele Änderungen vornehmen.
Gruß
Danke :-) Habe es hinbekommen... beide Bewegungsmelder schalten das Licht ein etc... Aber ein kleines Problem habe ich noch. Trotz einer Bewegung im Raum schalten die Sensoren den Schalter nach der angegeben Zeit aus. Woran kann dies liegen, habe ich noch etwas vergessen? Vielen Dank schon einmal
Hallo,
danke für den Artikel und vor allem natürlich für das Script. Leider habe ich damit ein Problem. Wenn das Script startet, bekomme ich im Debugger folgende Meldung (und das hört leider nicht mehr auf ...):
[DEBUG] 16:33:09: Resete Time, Bewegung erkannt bzw. Motionsensor sendet noch nicht (vgl. Parameter 6)
[DEBUG] 16:33:10: Resete Time, Bewegung erkannt bzw. Motionsensor sendet noch nicht (vgl. Parameter 6)
Der Parameter 6 steht auf dem Standardwert 30 und ich weiß wirklich nicht, was da jetzt falsch läuft.
HELP!
Grüße
Marco
Das Problem hat sich bei mir erledigt. Ich vergaß, einen Wert bei den Properties vergessen :-/
Hy
Also das Skript ist schon super.
Wie würde man noch einbauen wenn man noch als Bedingung das zb 1 Rollade zu ist?
Danke
Joe
Hi,
da musst Du in die If-Abfrage nur per UND eine weitere Bedingung aufnehmen, zB:
tonumber(fibaro:getValue(ID, "value")) >= 10)
(oder auf Close prüfen)
VG Hoggle
Hallo,
ich bin leider „noch“ zu unerfahren mit LUA und habe schon einmal etwas experimentiert aber leider ohne Erfolg.
Habe richtig kopiert aber habe folgende Fehler
[DEBUG] 16:03:54: line 15: attempt to compare number with nil
Linie 15 in mein FIBARO LUA: if (tonumber(fibaro:getValue(motion, "value")) > 0 ) and (tonumber(fibaro:getValue(switch, "value"))) < 1 then
FIBARO HCL2 4.091 beta
Kann mir jemand helfen?
Danke
Hi,
bau Dir mal vor der Zeile 15 eine Debug-Zeile ein, in der Du die Werte von "motion" und "Switch" ausgeben lässt
a la
fibaro:debug(fibaro:getValue(motion, „value“))
fibaro:debug(fibaro:getValue(switch, „value“))
VG Hoggle
Hi,
ich hatte dieses Script nun schon seit einiger Zeit erfolgreich am laufen. Seit dem Update auf 4.100 schaltet sich das Licht jedoch plötzlich ständig von alleine ein, ohne dass jemand den Bewegungsmelder auslöst! Die Szene startet sich die ganze Zeit irgendwie selber (kein Witz!). Außer dem Update habe ich nichts verändert. Kann jemand bitte helfen?
Danke im Voraus.
VG
Ernst
Hi,
erstmal danke an criss für das Skript, funktioniert super mit meinem Fibaro Unterputz Schalter.
Wollte das Skript kopieren und mit einer hue Lampe nutzen. Also die IDs geändert und nun sagt er mir immer:" [DEBUG] 13:54:03: line 20: attempt to compare number with nil"
Hat Jemand eine Idee?
Besten Dank MfG
Super Sache aber ich habe eine Rückfrage, laufen tut es aber mich stört, dass die zuletzt verwendete Farbe verwendet wird.
Wie baue ich dort eine RGB Steuerung mit ein die die Farbe auswählt die ich vorgebe und nicht das knallgrün von vorher nimmt?
Besten Dank
Simon
Hi
Ich suche eine Lösung für folgendes Problem:
Habe Fibaro HC2, einen Türsensor zur Veranda, einen Licht-Switch auf der Veranda und einen Aeotec Multisensor, welcher als Bewegungssensor dient.
Wenn das Licht an ist (in der Nacht), die Verandatür geschlossen ist und dann der Bewegungssensor "breached" ist, dann habe ich eine kleine Lichtshow (Licht an und ab) laufen, welche ihren Dienst sehr gut erledigt, um den Fuchs zu vertreiben, welcher uns sonst (wie schon so oft getan) die Verandasitze vollpinkelt.
Folgender LUA-Skript ist hierfür installiert und ist funktionsfähig:
-------------------------------------------------------------------
--[[
%% properties
80 value
105 value
93 value
%% weather
%% events
%% globals
--]]
local startSource = fibaro:getSourceTrigger();
if (
-- Wenn Türe (80) zu, wenn Licht (105) an, wenn Multisensor (93) breached, dann:
( tonumber(fibaro:getValue(80, "value")) == 0 and tonumber(fibaro:getValue(105, "value")) > 0 and tonumber(fibaro:getValue(93, "value")) > 0 )
or
startSource["type"] == "other"
)
then
fibaro:call(105, "turnOff");
setTimeout(function()
fibaro:call(105, "turnOn");
end, 500)
setTimeout(function()
fibaro:call(105, "turnOff");
end, 3000)
setTimeout(function()
fibaro:call(105, "turnOn");
end, 4500)
end
-----------------------------------------------------
Das Problem ist, dass wenn jemand der Familie bei Dunkelheit mal auf die Veranda geht, dann wieder reinkommt und die Verandatür schliesst, dass dann die Lichtshow losgeht, da der Multisensor noch während circa 50 Sekunden "breached" ist.
Gibt es dafür eine Lösung? Mir schwebt vor, dass ich eine 4. Bedingung in das LUA-Skript einbauen sollte (nebst den 3 bestehenden Bedingungen; (1) Tür zu, (2) Licht an, (3) Bewegung auf Veranda), nämlich (4) Tür während mindestens 90 Sekunden geschlossen.
Wie schreibt sich diese 4. Bedingung aber auf LUA-Sprache?
Andere (bessere) Lösungen?
Liebe Grüsse
Hi,
erstmal sind die Trigger der Szene schonmal falsch gesetzt. Die Szene soll ja nicht ausgeführt werden, wenn sich das Status des Lichtes ändert. Hier musst du schonmal tätig werden. Für deine Bedingung würd sich eine while-Schleife anbieten, die hochgezählt wird.
Gruß
Vielen Dank, Daniel, für die Antwort. Die Szene soll nur ausgeführt werden, wenn das Licht an ist. Nicht, wenn das Licht ab ist. Eine andere Szene sorgt dafür, dass das Licht nachtsüber an ist. Von dem her, denke ich, dass die Trigger richtig sind. Zumindest funktioniert es nachtsüber (und der Fuchs hat keine Geschäfte mehr bei uns erledigt).
Leider weiss ich nicht, was eine while-Schleife ist, geschweige denn, wie ich diese in ein funktionsfähiges LUA-Skript einbinden könnte. Kannst Du mir da weitere Infos zu geben? Das wäre cool.
Vielen Dank
Melissa
Nein, sind sie nicht ;) Durch die Trigger wird die Szene bei einer Statusänderung der Lampe ausgeführt, was aber nicht gewollt ist. Mehr erfährst du hier:
https://www.siio.de/fibaro-homecenter-einsteigerguide-teil-2-getriggerte-szenen/
Ein Beispiel einer while-Schleife findest du hier:
https://www.siio.de/so-nutzt-du-das-fibaro-alarmpanel-des-homecenters/
Gruß
Was ist mit "vgl. Parameter 6" im Kommentar in Zeile 39 "Resete Time, Bewegung erkannt bzw. Motionsensor sendet noch nicht (vgl. Parameter 6)" gemeint?
Wie würde dieser LUA-Skript mit zwei Bewegungsmelder aussehen?
Wer kann mir helfen ?
Habe einen Fehler in Reihe 16 sowie 21.
--[[
%% properties
259 value
130 value
%% globals
--]]
-- VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein)
local scene = 80 -- ID dieser Szene
local motion = 259 -- ID des Bewegungssensors
local switch = 130 -- 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"))) 0 then
local starttimer = 300;
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"))) 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
kann man da noch eine Zeitspanne hinzufügen zb. das Licht geht nur von 18:00 Uhr bis 06:00 Uhr
Ich bekomme das Script nicht zum Laufen. Ich bin der totale Anfänger.
Ich habe die IDs ersetzt, soweit klar. Überall wo Motion steht, habe ich die ID von meinem Sensor eingetragen, sowie das vom Switch. Ohne das erstzen hat es nämlich auch nicht funktioniert. Benötige ich Variablen?
Ich hab sowas von keinen Plan
Danke euch
Hallo zusammen,
mal eine kurze Frage:
Wenn ich anstelle eines Schalters einen dimmer habe, reicht es wenn ich in Zeile 17 "turnOn" gegen setValue="30" tausche, um bei bewegung nur 30% vom Licht einzuschalten?
Gibt es auch ein Beispiel für die LUA Szene für die HC3? Ich habe Probleme dieses Script zu übernehmen.