Website-Icon Dein Smart Home Blog

Die perfekte Lichtsteuerung mit Fibaro LUA - Teil 1

by fotolia.com

by fotolia.com

Vergiss all deine Szenen und Scripte für Beleuchtungssteuerung, jetzt wird es wirklich smart.

[alert variation="alert-info" dismiss="dismiss"]Das Script wurde weiterentwicklet und bekam neue Funktionen. Einen weiterführenden Artikel findest du hier: Die perfekte Lichtsteuerung mit Fibaro LUA – Update 1[/alert]

Wir, also ich und meine Freundin, (Kind muss) haben entschieden umzuziehen. Freue mich schon wahnsinnig auf die neue Wohnung, vor allem weil die wirklich smart wird - bzw. diese das werden soll. Noch ist Sie nicht fertig, Vorteil für uns denn wir dürfen den Erstbezug vornehmen. So habe ich direkt dem Elektriker ein paar Fibaro Dimmer 2 in die Hand gedrückt, welche er hinter den Lichtschaltern verteilen soll. Durch die Fibaro Dimmer 2[icons icon="icon-link" color="#1e73be" size="13"], in Verbindung mit Tastern (anstelle von Schaltern) kann ich dann Szenen triggern (auslösen) und die Deckenbeleuchtung via Smartphone, Verknüpfungen oder Szenen steuern.

Daher suche ich momentan fleißig im Netz nach Ideen, welche die neue Wohnung noch smarter und mich damit etwas fauler machen können. Ich hoffe trotz Arbeit, Familie, Blog, IFA (im September) und Umzugsvorbereitungen finde ich noch etwas Zeit für siio, denn auf jedenfall möchte ich euch von allen Basteleien, Scripten, Virtuellen Modulen und anderen Smart Home Kram mit der Fibaro berichten. Das alles findet ihr ab sofort unter dem Tag: #ChrisBautSchloss oder unserer Fibaro "Wissensdatenbank"

Intelligente Beleuchtungssteuerung

Kennst du das auch? Du gehst Nachts noch mal PiPi und bist direkt Blind nachdem du das Licht einschalten hast? Das passiert dir mit dieser LUA Szene (Script) nicht mehr!

Mit dem folgenden Script von Controlliving.nl[icons icon="icon-link" color="#1e73be" size="13"] (Danke Andreas[icons icon="icon-link" color="#1e73be" size="13"] für den Tipp und ein ganz besonderer Dank an Aleksander[icons icon="icon-link" color="#1e73be" size="13"] für den Support!), lässt sich die Beleuchtung vollautomatisch steuern. Hierbei können eine Vielzahl an Werten wie Helligkeit, Bewegung, Tageszeit und Anwesenheit der Bewohner berücksichtigt werden. Das LUA Script ist super einfach zu konfigurieren, aber dennoch wahnsinnig komplex - so komplex das es fast auf jeden Wohnbereich flexibel anwendbar ist.

Das LUA Script (Szene) schaltet zu den verschiedenen Tageszeiten, anhand einer Tageszeit Variable (mehr in Teil2) verschiedene von dir definierte Lampen ein, sobald eine Bewegung erkannt wurde und ein Mindest-LUX Wert (Helligkeit) unterschritten wird. Es unterstützt mehrere Helligkeits- und Bewegungsmelder und du kannst die Zeit festlegen, wie lange das Licht noch eingeschaltet bleiben soll, nachdem keine Bewegung mehr erkannt wurde.

Ausserdem verfügt das Script über ein "extra Function" Teil, in welchem du weiteren Script Code einfügen kannst, sogar mit IF - Then Regeln (WENN-DANN).

Da das Script auch viele Werte einbezieht, welche als Globale Variable abgefragt werden - wie zum Beispiel Tageszeit, Anwesenheit, Haus wach / schläft ect. - hat dieses Tutorial mehrere Teile. Hier in diesem Artikel findest du das vollständige LUA Script zum Download und ich erkläre dir die Stellen im Script, welche du anpassen musst, so das dass Script nach diesem Artikel heute noch bei dir funktioniert. Wie du am besten die anderen benötigten Variablen setzt, erkläre ich dir im nächsten Teil.

Lass uns mal starten, indem ich jetzt die Teile hier hinein kopiere, welche du anpassen musst. Natürlich werde ich jeweils noch ein paar Worte dazu verlieren. Am Ende dieses Artikels findest du dann den Download Link mit dem gesamten Script.

Beleuchtungs-Szenen LUA Script erklärt

Beginnen wir direkt in Zeile 1. In den %%properties wie immer die Elemente (Aktoren, Sensoren, Variablen ect.) - welche die Szene triggern, also auslösen. Bei dem Beleuchtungsscript sieht das so aus:

Ich denke allzuviel muss ich  hierzu nicht sagen. Die Szene kann also entweder durch Bewegung oder Veränderung der Helligkeit ausgelöst werden, sowie bei Veränderung der Tageszeit oder Anwesenheit. Bedeutet, wenn die Lichter gerade an sind und die Helligkeit überschreitet den Mindest LUX / Helligkeitswert, so werden diese ausgeschaltet. Gleiches gilt wenn sich dein Anwesenheitsstatus verändert, weil du das Haus verlassen hast. Auch wenn sich die Tageszeit verändert, beispielsweise von "Morning" auf "Day" und du noch am  Frühstückstisch sitzt, da du wieder getrödelt hast, gehen die Lampen in die entsprechende Lichtstimmung für "Day".

Bewegungsmelder und Lichtsensoren definieren

So nun ab in Zeile 24 und 25.

Hier gibst du die ID für den Bewegungsmelder und den Sensor für die Helligkeit ein. Die gleichen IDs hast du ja gerade oben in den Properties eingetragen. Wenn du mehrere Lichtsensoren verwenden möchtest, trägst du diese so ein:

In diesem Fall errechnet das Script von beiden Werten den Durchschnittswert. Die gleiche Formatierung kannst du verwenden wenn du mehrere Bewegungsmelder nutzen möchtest, um die Beleuchtung einzuschalten. Vergiss nicht die IDs der zusätzlichen Licht- und Bewegungsmelder auch oben in den Properties einzutragen!

So findest du übrigens die ID der Komponente heraus:

Fibaro - Geräte ID herausfinden

Globale Variablen anlegen

Da ab Zeile 33 globale Variablen verwendet werden, müssen wir diese erst einmal anlegen. Diese Variablen sagen später der Szene welche Tageszeit gerade ist, ob du Zuhause bist und ob das Haus gerade schläft (interessant für Tierbesitzer, damit Ihr Nachts keine Disco im Haus habt).

Um die Variablen anzulegen, gehe in der Weboberfläche des Fibaro HC2 oben auf: Steuerung > dann im linken Menü auf: Variablen Steuerung

Fibaro HC2 Variablen anlegen

Hier brauchen wir diesmal nicht die "einfachen" Variablen, sondern du scrollst nach ganz unten zu: "Vordefinierte Werte". Hier legst du nun 3 verschiedene Variablen an: SleepState ; TimeOfDay ; PresentState. Die Variablen bekommen folgende Werte:

  1. SleepState = Sleeping ; Awake
  2. PresentState = Home ; Away ; Holiday
  3. TimeOfDay = Morning ; Day ; Evening ; Night

Vordefinierte Variablen anlegen in Fibaro HC2

Achte beim Anlegen der Variable auf die Groß- und Kleinschreibung! Mit diesen Variablen wird das Beleuchtungsscript eigentlich erst intelligent, denn durch diese erhält es die Informationen "was los ist". Natürlich müssen diese Variablen ab sofort korrekt gesetzt werden. Da du dies sicher nicht händisch machen möchtest, brauchen wir weitere Szenen oder virtuelle Module, welche dies für uns erledigen. Aber dazu in den nächsten Teilen dieser Turorialreihe mehr. (Wenn du sehr ungeduldig bist, hier ein Tipp: Über die Anwesenheitsprüfung hab ich hier und da schon einmal was geschrieben.)

Variablen zur intelligenten Lichtsteuerung

Noch ein kleiner Tipp, stelle die SleepState Variable jetzt erstmal auf "Awake" ;-)

So dann hier noch fix der Ausschnitt von Codezeile 28-35 wo die Variablen gemappt werden:

Licht wenn Mindesthelligkeit unterschritten wird

In den Zeilen 39- 42 finden wir unsere Tageszeiten wieder. Hier geht es nun darum, wie dunkel es im Raum sein muss, damit das Licht eingeschaltet wird. Wir definieren hier also eine Mindeshelligkeit in Lux, welche unterschritten werden muss, damit das Licht angeht. Welche Werte du hier benötigst ist völliges Finetuning. Hier heißt es probieren, beobachten, testen und optimieren.

Lichter, auf bestimmten Dimmwert je nach Tageszeit

Hier kommen wir nun zu dem wirklich interessanten Teil - ab hier passiert dann auch mal was ;-) Ich rede von Zeile 53- 57. So sieht das ganze aus:

Voran die entsprechende Tageszeit, dahinter in den Klammern werden die Lichter definiert, welche eingeschaltet bzw. gedimmt werden sollen. Zum einschalten einer Relais[icons icon="icon-link" color="#1e73be" size="13"], oder was auch immer. Hier nochmal die unterschiedlichen Geräte Möglichkeiten:

  1. Zwischenstecker und Relais: {id=902, setValue="turnOn", onTime=300}
  2. Dimmer : {id=471, setValue="80", onTime=300}
  3. RGBW Module: {id=414, setValue={R="32", G="7", B="0", W="0"}, onTime=300}

Der Wert "onTime" definiert die Zeit, wie lange das Licht noch an bleibt, nachdem die letzte Bewegung erkannt wurde. Im Beispiel der onTime von 300 entsprticht dies 300 Sekunden, also 5 Minuten. Du kannst die onTime aber auch weglassen. Es gibt also 3 Möglichkeiten:

  1. Die Werte ohne den Timer setzen, benutze 2 Parameter: {LightID, "VALUE"}
  2. Die Werte mit Timer setzen benötigst du 3 Parameter: {LightID, "VALUE", timeInSeconds }
  3. Verwenden von virtuellen Modulen mit Slider: {LightID, "VALUE", "timeInSeconds", VirtualDeviceSliderID}

Im Beispiel ist die "Tageszeit" Sleep leer: lightsSleeping = {}; - heißt es werden keine Leuchten eingeschaltet. Daher vorhin mein Tipp beim Variablen anlegen, die SleepState Variabel erstmal auf Awake zu setzen, damit beim probieren und testen auch deine Lampen ganz sicher angehen ;-)

Extra Funktionen pro Tageszeit

Hier kannst du dich austoben! Beachte aber, das dieser Teil vom Script immer ausgelöst wird wenn Bewegung erkannt wurde. Der gesetzte MinLux Wert spielt hier keine Rolle. Dennoch eine schöne Spielwiese um Beispielsweise in der "extraMorningFunc" zu prüfen ob der iKettle schon Wasser gekocht hat und wenn nicht, dann kannst du ihn hier einschalten. Oder schalte in der "extraEveningFunc" noch deine Lieblingslampe an, wenn der XBMC Player läuft. If- then Befehle sind hier nämlich durchaus möglich.

Beispiel:

Zu finden sind die Extra Funktionen ab Zeile 66.

Das wars schon! Mehr musst du an dem Script für die Szene nicht ändern. Also los: Gehe auf die Weboberfläche deines Fibaro HC2, gehe zu Szenen und lege eine neue Szene mit LUA an. Dort wechsel du auf die Registerkarte: Erweitert und kopierst das Script hinein. Danach kannst du all deine Anpassungen vornehmen.

[carousel arrows="display" buttons="display" caption="display"] [panel title="Smart Lights" description="Szene - Morning und Day"][/panel] [panel title="Smart Lights" description="Szene - Evening"][/panel] [panel title="Smart Lights" description="Szene - Night"][/panel] [panel title="Smart Lights" description="Szene - Evening Flur"][/panel] [panel title="Smart Lights" description="Szene - Night Flur"][/panel] [/carousel]

Das Script kannst du hier herunterladen

Ich bin mega gespannt, wie du das Script einsetzt, welche Lichter du steuerst. Poste gern Bilder in unserem Forum!  Wenn du coole Scripte oder Virtuelle Module hast, immer her damit, ich teste gern alles was meine neue Wohnung smarter macht.

Titelbild by fotolia.com

Die mobile Version verlassen