6209 Zeichen
Score aktualisiert
100%
Code: c88b4e5a82914b86aabd59fbecab6676
Token in Entwicklung nicht aktualisiert
img-Tag in Entwicklung deaktiviert
„Laufende Verzögerungen beenden“ ist eine Funktion, die man unbedingt
verstehen sollte, wenn man Programme auf der CCU schreibt.
Auch wenn es nur eine unscheinbare Checkbox ist – sie ist wichtig. Anhand zweier
einfacher Programme möchte ich kurz beschreiben, was es mit dieser Option auf sich hat.
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.
Eine Stunde Licht
Das erste Programm schaltet für eine Stunde meine Schlafzimmerbeleuchtung ein. Ob man
so ein Programm braucht, sei mal dahingestellt – hier soll es nur als Beispiel dienen.
Das Programm ist simpel: Wenn ich einen Knopf auf der Fernbedienung drücke, schaltet
die CCU das Licht an. Nach einer Stunde schaltet sie es wieder aus. Fertig.
Ich verwende nicht die Einschaltdauer
des Schaltaktors, sondern die Verzögerung der WebUI. Auf eine programmierte
Einschaltdauer hat die Option keine Auswirkung: Wird ein Einschaltbefehl an den Aktor
gesendet, dann wird auf jeden Fall sein interner Timer unterbrochen, unabhängig von der
Option in der CCU.
Wer ernsthaft ein solches Programm anlegen möchte, der ist vermutlich mit einer
direkten Verknüpfung als „Treppenhauslicht“ besser bedient: schneller,
zuverlässiger und weniger Belastung des Duty Cycles der CCU.
Schon bei diesem einfachen Progamm hat die Checkbox Vor dem Ausführen alle
laufenden Verzögerungen für diese Aktivitäten beenden (z.B. Retriggern)
tatsächlich eine Funktion.
Wenn man auf den Fernbedienungsknopf drückt, wird das Programm ausgeführt. Das Licht
wird eingeschaltet und ein Timer läuft 60 Minuten lang in der CCU ab. Nach 60 Minuten
wird das Licht wieder ausgeschaltet.
Angenommen, man drückt nach 20 Minuten wieder auf den Kopf. Das Licht wird noch einmal
eingeschaltet – sinnlos, weil es schon an ist, aber egal. Dann beginnt ein weiterer
60-Minuten-Timer zu laufen. Der erste läuft aber ebenfalls weiter. Das bedeutet: 40
Minuten nach dem zweiten Tastendruck wird das Licht bereits wieder ausgeschaltet – und 20
Minuten später, also 60 Minuten nach dem zweiten Tastendruck, noch einmal, sinnlos, weil
es schon aus ist, aber egal.
Wenn der Haken gesetzt ist, dann wird die laufende Verzögerung durch den Tastendruck
unterbrochen.
Ich drücke wieder nach 20 Minuten erneut auf den Knopf. Die Verzögerung des ersten
Tastendrucks (rot) wird abgebrochen, die Verzögerung des zweiten (grün) läuft ganz
normal durch. Das Licht bleibt 80 Minuten an – 20 Minuten zwischen dem ersten und zweiten
Tastendruck, 60 Minuten nach dem zweiten.
Dauerlicht
Zu meinem ersten Beispielprogramm gesellt sich nun noch ein zweites. Auch dieses ist
simpel: Wenn Anwesenheit auf anwesend gesetzt wird, geht das Licht an – und
bleibt an.
Wer das wirklich ausprobiert, der stellt fest, dass sich der Haken auf die Geräte
(bzw. Systemvariablen) bezieht – nicht auf die Programme.
Ausführung ohne erstes Programm
Erst einmal setze ich meine Systemvariable auf anwesend, ohne vorher
irgendetwas anderes gemacht zu haben. Es passiert genau das, was zu erwarten war: Das
Licht wird eingeschaltet und bleibt an.
In diesem Fall spielt der Haken keine Rolle: Es läuft keine Verzögerung, darum wird
auch nichts abgebrochen.
Jetzt dücke ich zunächst auf meinen Taster. Das erste Programm (rot) läuft los und
die Verzögerung beginnt.
Nach 20 Minuten setze ich die Systemvariable auf anwesend. Das Licht wird
wieder eingeschaltet (jaja, immer noch sinnlos, ich weiß), aber die Verzögerung von
Programm a läuft unbeirrt weiter. 40 Minuten später ist die Zeit von Programm a
abgelaufen und das Licht geht aus.
Auch hier starte ich zunächst Programm a durch einen Tastendruck: Das Licht geht an
und die Verzögerung beginnt zu laufen.
Wenn jetzt Programm b ausgelöst wird, dann wird wieder sinnlos das Licht
eingeschaltet, aber außerdem wird die laufende Verzögerung von Programm a gestoppt. Der
Ausschaltbefehl von Programm a wird nicht mehr ausgeführt und das Licht bleibt an.
Gemischtes Doppel
Ich komme noch einmal zurück auf mein erstes Beispielprogramm. Ich bin nämlich in der
glücklichen Lage, in meinem Schlafzimmer zwei Beleuchtungen zu haben: strahlend hell an
der Brennstelle unter der Decke und elegant gedämpft unter dem Bett. Also lasse ich jetzt
von meinem ersten Programm auch das Deckenlicht für eine Stunde einschalten.
Das zweite Programm lasse ich unverändert. Das führt zur Erkenntnis, dass nur die
Verzögerungen abgebrochen werden, die im abbrechenden Programm auch vorhanden sind.
Haken im zweiten Programm nicht gesetzt
Dieser Fall ist so einfach und logisch, dass ich nicht mal einen eigenen Zeitstrahl
dafür habe: Beide Leuchten werden von Programm a eingeschaltet, danach die
Ambientebeleuchtung noch einmal von Programm b, sinnlos. Die Verzögerung läuft weiter
und nach 60 Minuten ist der Spuk vorbei und das Licht ist aus.
Haken im zweiten Programm gesetzt
Jetzt wird es etwas interessanter. Ich schalte das Licht mit der Fernbedienung ein,
beide Leuchten gehen an und es werden zwei Verzögerungen gestartet: eine für die
Ambientebeleuchtung und eine für das Deckenlicht.
Dann löse ich das zweite Programm aus. Die Ambientebeleuchtung wird erneut
eingeschaltet (sinnlos) und ihre laufende Verzögerung unterbrochen: Das Licht bleibt an,
bis Krümmel
explodiert oder ich es auf anderem Wege ausschalte. (Kein Scherz – seit ich im Großraum
Hamburg wohne, hatte ich nur zwei spürbare Stromausfälle, und beide Male hat im
Kernkraftwerk nebenan irgendwas gebrannt.)
Das Deckenlicht wird ebenfalls erneut eingeschaltet (…), doch seine Verzögerung
läuft weiter. Eine Stunde nach dem Start des ersten Programms geht das Deckenlicht wieder
aus.
Das zweite Programm, in dem nur die Ambientebeleuchtung geschaltet wird, unterbricht
also auch nur die Verzögerung der Ambientebeleuchtung im ersten Programm. Die
Verzögerung der Deckenbeleuchtung läuft weiter, auch wenn der Haken gesetzt ist.
Als kleine Einführung in die Wunder der unterbrochenen Verzögerungen soll es an
dieser Stelle reichen.
Bei den Beschreibungen meiner Programme schreibe ich in der Regel immer dazu, ob der
Haken gesetzt werden muss oder nicht – und warum. Dadurch bekommt man vielleicht ein
Gefühl dafür, was man mit der Option alles anstellen kann. Sie ist einfach, aber
ungemein wichtig.