Laufende Verzögerungen beenden

Was der Haken in WebUI-Programmen bedeutet

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.

Haken nicht gesetzt

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.

Haken gesetzt

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.

Haken nicht gesetzt

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.

Haken gesetzt

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.

Navigation