11216 Zeichen
Score aktualisiert
100%
Code: 0d354d4afe614e3e8e7cf42ebd6eba85
Token in Entwicklung nicht aktualisiert
img-Tag in Entwicklung deaktiviert
Mit meiner Treppenhausbeleuchtung wurstele ich schon seit vielen Jahren herum. Das
Problem war, dass ich regelmäßig wild mit den Armen wedelnd im ersten Stock auf dem Flur
stand, weil das Licht ewig zum Einschalten brauchte. Zum Glück hat das nicht so gut
funktioniert, so dass es dunkel blieb, denn es sah bestimmt albern aus.
Was ich auf der Treppe veranstaltet habe, mag ich hier nicht mal beschreiben.
Mit einigen wohlplatzierten Klicks in der WebUI ließ sich die Situation deutlich
verbessern.
Benennung von Systemvariablen
Prinzipiell kann man Systemvariablen – so wie allen Objekten in der CCU – beliebige
Namen geben, also z. B. auch Umlaute und Sonderzeichen verwenden. Ich empfehle jedoch,
sich auf reguläre Buchstaben (a-z, A-Z) zu beschränken: Bei Umlauten und Sonderzeichen
besteht die Gefahr, dass Systemvariablen in Scripten nicht überall gefunden werden.
Früher
Ich habe drei Bewegungsmelder in meinem Treppenhaus verteilt: einen für den Flur im
ersten Stock und je einen für die beiden Treppen nach oben und unten.
Die Beleuchtung wird mit vier Schaltaktoren geschaltet: einer für die Treppe unten,
einer für die Treppe oben, zwei für den Flur, welcher zwar klein ist, aber verwinkelt,
und außerdem steht mein Bücherregal … egal, vier Aktoren.
Die Bewegungsmelder haben bei Bewegung das Licht über Zentralenprogramme im jeweils
zugehörigen Bereich eingeschaltet. Es gab noch zusätzliche Bedingungen, damit z. B. bei
offenen Fenstern und Türen das Licht ausgeschaltet blieb – wegen der Insekten im Sommer.
Diese Implementierung hatte zwei große Nachteile.
Auf dem Schaubild sieht man, dass zum Schalten des Lichts eine Menge Befehle gesendet
werden mussten. Das kostete viel Zeit.
Wenn ich den Flur betrat, musste der Bewegungsmelder mich erst mal erkennen – das
geringste Problem, denn ich bin groß und warm und damit ideal für Infrarot-Sensoren.
Dann musste er die erkannte Bewegung an die CCU senden und die musste dann jedem einzelnen
Aktor seine Einschaltdauer zusenden und ihn einschalten.
Beim Flur sind das fünf Befehle, wobei die CCU den jeweils nächsten Befehl erst
sendet, wenn der vorherige durch den Empfänger quittiert wurde. Bidirektionale
Kommunikation ist super für Betriebssicherheit, aber Gift, wenn man auf dem Weg ins
Schlafzimmer nicht die Treppe runterfallen möchte.
Ich habe mein Treppenhaus mit eleganten LED-Spots ausgestattet – richtig aufwendig,
jede Stufe ein Strahler, total schick. Leider weiß man immer erst hinterher, ob
LED-Leuchten brauchbare Qualität haben oder nicht.
In diesem Fall: „oder nicht“.
Schon nach ein oder zwei Jahren wurden die Spots auf der unteren Treppe, die häufig
eingeschaltet werden, deutlich dunkler. Ersatz ist schwer zu beschaffen, sofern ich nicht
die Brandschutzwand zum Nachbarn noch mal aufstemmen möchte.
Der Workaround sieht so aus, dass ich nicht mehr nur den unteren Beleuchtungsteil
schalte, wenn unten Bewegung erkannt wird, sondern den Flur gleich mit. Das zusätzliche
Licht erhellt dann auch der unteren Treppe oberste Stufen. Wieder mehr Befehle. Wieder
mehr Zeitverzögerung. Kein guter Workaround.
Das neue Programm
Der neue Plan sieht so aus: Ich schalte die Beleuchtung des gesamten Treppenhauses mit
einer virtuellen Fernbedienung, so dass immer alle Leuchten gleichzeitig eingeschaltet
werden. Das reduziert massiv den Kommunikationsaufwand und damit die Reaktionszeit:
- bei direkten Verknüpfungen wird die Funktion, z. B. die Einschaltdauer, einmalig im
Aktor gespeichert und Befehle müssen nicht einzeln übertragen werden
- alle Empfänger haben die Information gespeichert, auf welche Sender sie reagieren
müssen; sie schalten sich synchron ein, sobald sie den Einschaltbefehl erkannt haben
- die CCU muss nicht auf Rückmeldungen einzelner Aktoren warten, sondern spricht alle
gleichzeitig an
Direkte Verknüpfungen mit den Bewegungsmeldern kommen für mich nicht in Frage, denn
das wären 12 Stück – extrem nervig zu programmieren. Außerdem möchte ich weiterhin die
Möglichkeit haben, Aktoren über Taster direkt einzuschalten, auch wenn die Automatik aus
irgendeinem Grund deaktiviert ist – damit fällt dann auch die Sperre der Aktoren als Option weg.
Auch wenn die Logik jetzt etwas länger ist, steigt die Ausführungsgeschwindigkeit
signifikant. Es kommt nicht auf die Länge an, sondern auf das viele Hin und Her. Wie beim
Auto.
Virtuelle Fernbedienung einrichten
Zunächst suche ich mir einen freien virtuellen Kanal auf meiner CCU und gebe ihm einen
passenden Namen. Ich nenne ihn mal Treppenhausbeleuchtung, wie es meiner generell
spröden Art entspricht.
Unter Programme und Verknüpfungen / Direkte Verknüpfungen erstelle
ich dann für meine vier Aktoren direkte Verknüpfungen. Die Vorgehensweise habe ich schon
an anderer
Stelle detailliert beschrieben.
Um virtuelle Kanäle in der Geräteliste auswählen zu können, muss der Button Virtuelle
Kanäle anzeigen betätigt werden.
Dies gilt auch bei der Erstellung von WebUI-Programmen.
Wichtig ist, beim jeweils zweiten Schritt auf Erstellen und bearbeiten zu
klicken. Als Standard ist der Ein-/Ausschalter vorbelegt – ich brauche das
Treppenhauslicht mit fünf Minuten Einschaltdauer.
Danach auf OK, das Ganze für alle Aktoren wiederholen und die virtuelle
Fernbedienung ist fertig.
Wer die Fernbedienung einem Raum oder Gewerk zugewiesen hat, der kann jetzt über Status
und Bedienung direkt in der WebUI ausprobieren, ob die direkte Verknüpfung
funktioniert.
Systemvariablen erstellen
Meine Treppenhausbeleuchtung soll unter bestimmten Bedingungen nicht automatisch
eingeschaltet werden. Deshalb lege ich noch eine Systemvariable an, mit der festgelegt
werden kann, ob sie aktiv ist oder nicht.
Die Systemvariable heißt Treppenhaus automatisch. Ich weise sie dem (neuen,
virtuellen) Kanal Treppenhausbeleuchtung zu, damit ich den Status in der WebUI
direkt beim Gerät angezeigt bekomme.
Eine zweite Systemvariable mit dem Namen Treppenhaus Zeitsperre wird später
dafür sorgen, dass die Automatik für kurze Zeiträume gesperrt werden kann.
Was es damit auf sich hat, wird weiter unten deutlich.
Unter Status und Bedienung werden nun die Systemvariablen angezeigt.
Automatik aktivieren
Wenn irgendwo Fenster und Türen offen sind, dann soll das Licht nicht automatisch
eingeschaltet werden. Ich lege daher ein kleines WebUI-Programm an, das die Systemvariable
Treppenhaus automatisch setzt.
Das Programm ist ellenlang, weil jeder Raum aufgeführt ist, der ans Treppenhaus grenzt
– der Screenshot zeigt nur einen Ausschnitt. Der Aufbau ist allerdings einfach: Wenn bei
irgendeinem Raum Fenster und Tür offen sind, dann wird die Automatik deaktiviert, sonst
aktiviert.
Im Wohnzimmer habe ich keine Tür zum Treppenhaus, weil ich eine liberale Weltsicht
habe, für eine offene Gesellschaft eintrete und in meinem Treppenhaus ein Zeichen gegen
Ausgrenzung setze. Außerdem hat der Bauunternehmer da vor 30 Jahren keine Tür
eingesetzt. Darum gibt es für das Wohnzimmerfenster keinen zugehörigen Türkontakt im
Programm.
Zu beachten ist, dass Treppenhaus automatisch nicht über Systemvariable
ausgewählt wird, sondern über den Kanal Treppenhausbeleuchtung, dem die
Variable zugeordnet ist.
Licht schalten
Der große Moment: Mit einem weiteren kleinen WebUI-Programm wird das Licht geschaltet.
Das Programm ist recht simpel gestrickt: Wenn irgendwo Bewegung erkannt wird, die
Automatik aktiv und die Zeitsperre inaktiv ist, dann wird der virtuelle Taster Treppenhausbeleuchtung
betätigt – und das Licht geht an.
- Die Bewegungsmelder lösen bei Aktualisierung aus. Wäre hier bei Änderung
ausgewählt, so würde nach fünf Minuten das Treppenhauslicht wieder erlöschen, selbst
wenn in dieser Zeit durchgehend Bewegung im Erfassungsbereich wäre.
- Für Treppenhaus automatisch ist bei Änderung ausgewählt: Wenn ich
bei geöffneten Fenstern und Türen durchs Treppenhaus laufe, bleibt das Licht aus. Wenn
ich die entsprechenden Türen schließe, melden sie ihren Status an die CCU, Treppenhaus
automatisch wird aktiviert, löst das Programm aus, der virtuelle Taster wird
gedrückt und das Licht geht an. Fühlt sich gerade noch jemand an die Was-passiert-dann-Maschine aus der Sesamstraße
erinnert?
- Treppenhaus Zeitsperre ist ebenfalls auf bei Änderung gesetzt. Falls
ich nach Aktivierung der Zeitsperre weiter durch den Flur springe und mindestens einen
Bewegungsmelder auslöse, wird das Licht wieder eingeschaltet, sobald die Sperre abläuft.
Zeitsperre für die gute Nacht
Was hat es nun mit der Zeitsperre auf sich? Wenn ein Bewegungsmelder eine Bewegung
erkennt, dann sendet er diesen Status an die CCU. Wenn der interne Timer des
Bewegungsmelders abgelaufen ist, sendet er den neuen Status keine Bewegung.
Wurde bei zwei Bewegungsmeldern Bewegung erkannt und der erste meldet danach wieder keine
Bewegung zurück, dann wird das Programm erneut ausgelöst. Aufgrund der Logik von WebUI-Programmen wird erneut
der virtuelle Tastendruck gesendet – der andere Bewegungsmelder hat ja noch eine offene
Bewegungserkennung – und das Licht wird noch einmal für fünf Minuten eingeschaltet.
Hatte ich zwischenzeitlich das Licht im ganzen Haus ausgeschaltet, so schalten die
Bewegungsmelder es im Treppenhaus wieder ein, bis keiner mehr eine Bewegung erkennt.
Mit Treppenhaus Zeitsperre kann ich dafür sorgen, dass die Automatik für
kurze Zeit deaktiviert wird. Ich setze einfach in den fraglichen Programmen, also z. B.
meinem Licht-aus-Script, die Zeitsperre auf aktiv
und die Bewegungsmelder können ungestört ihr Ding machen.
Auch hier wird die Systemvariable wieder über das zugeordnete Gerät ausgewählt.
Um die Deaktivierung der Zeitsperre kümmert sich dann ein weiteres WebUI-Programm.
Das separate Programm erleichtert die Nutzung der Zeitsperre: Ich muss nur in einem
beliebigen Programm Treppenhaus Zeitsperre aktivieren und ganz von selbst wird
sie nach fünf Minuten wieder deaktiviert.
Wichtig ist die Auslösung bei Aktualisierung: Falls mehrere Programme die
Automatik sperren wollen, soll jedes Mal die Verzögerung zurückgesetzt werden. Dafür
ist auch der Haken bei alle laufenden Verzögerungen für diese Aktivitäten beenden
notwendig.
Weitere Auslöser zum Einschalten
Manchmal möchte ich garantiert Licht im Flur haben, auch wenn ich noch keinen
Bewegungsmelder ausgelöst habe. Ein Beispiel ist das Arbeitszimmer: Wenn ich dieses
verlasse und das Licht ausschalte, dann ist es auch auf dem Flur dunkel. Erschwerend kommt
hinzu, dass die Tür zum Arbeitszimmer den Bewegungsmelder auf dem Flur verdeckt, dieser
also erst relativ spät reagieren kann. So warm, dass ich durch eine Holztür einen
Infrarot-Sensor auslöse, bin ich selten.
Zum Glück kann die CCU auf „Licht ausschalten“ reagieren. Klingt einfach:
Wenn ich die Beleuchtung in Arbeitszimmer oder Bad ausschalte, wird die
Treppenhausbeleuchtung ausgelöst.
Eine wesentliche Änderung ist jedoch bei den Systemvariablen zu beachten: diese sind
nun auf nur prüfen gesetzt.
Der Grund: Wenn ich das Licht im ganzen Haus ausschalte und Treppenhaus Zeitsperre
aktiviert wird, geht auch das Treppenhauslicht aus – logisch. Nach fünf Minuten wird Treppenhaus
Zeitsperre wieder deaktiviert. Ist diese Bedingung nicht auf nur prüfen
gesetzt, dann löst die Systemvariable selbst das Programm wieder aus.
Bei den Bewegungsmeldern war das kein Problem, denn die sind nach spätestens fünf
Minuten wieder auf keine Bewegung zurückgefallen. Die Beleuchtung in Bad
und/oder Arbeitszimmer ist jedoch auf jeden Fall aus; damit ist die Bedingung
erfüllt und das Licht geht wieder an. Klingt komisch, ist aber so.
Die ausführliche Erklärung findet sich auch hier in der Logik von WebUI-Programmen.