Systemvariablen vom Typ Logik umschalten

Die meisten kennen das Problem: Es wird eine Systemvariable vom Typ Logik (Wahr / Falsch) angelegt und soll später per manueller Auslösung (Programm) einfach den Wert ändern, also von "Wahr" zu "Falsch" und von "Falsch" zu "Wahr" werden. Dies ist z.B. nützlich, wenn man eine Systemvariable nutzen will um z.B. den Sommermodus für eine Heizung oder Jalousien ein- oder auszuschalten.

Aufgabenstellung

Wer hier ein einfaches Programm in der CCU schreibt und je nach gesetztem Wert einfach auf den anderen Wert umschalten möchte wird bemerken, dass insbesondere die "Sonst-Bedinung" nicht zur Anwendung kommt, wenn man das programm manuell startet. Dies ist eine Besonderheit beim manuellen Ausführen von Programmen in der CCU: Es wird immer nur die "Dann-Bedingung" ausgeführt.

Glkeichzeitig gibt es diesen Effekt immer dann, wenn es auf "aktiv" gesetzt, gespeichert oder die CCU neu gestartet wird.

Dieses automatische Ausführen eines Programms insbesondere bei einem Neustart führt dazu, dass ein "Wahr" Wert ohne eigene Interaktion automatisch auf "Falsch" gesetzt wird (oder umgekehrt). Dies kann z.B. zu einem Nachteil werden, wenn eine Systemvariable für die Aktivierung der Heizung im Winter auf "Wahr" steht und nach einem Neustart der CCU automatisch auf "Falsch" gesetzt wird.

D.h. das Systemvariablen, die als Schalter mit manueller Interaktion verwendet werden, sollten nie auf "aktiv" gesetzt werde, da sonst Werte ohne interaktion geändert werden. Allerdings bleibt das Problem, dass ein rein manuelles Ausführen nur die "Dann-Aktion" ausführt. Dieses Thema kann auf verschiedene Arten gelöst werden.

Lösung 1

Es werden 2 manuelle Programme gebaut. Das erste Programm setzt die Systemvariable von "Falsch" auf "Wahr".

Das zweite Programm setzt die Systemvariable von "Wahr" auf "Falsch".

Die Programme werden anschließend auf "inaktiv" gesetzt, so dass kein automatisches Ausführen auch beim Neustart der CCU erfolgt.

Nun kann manuell umgeschaltet werden, und die CCU behält immer den manuellen Wert bei, auch wenn sie mal neugestartet wurde.

Lösung 2

Wir erstellen ein kleines Script, welches die Beschränkung aufhebt, dass immer nur die "Dann-Bedingung" ausgeführt wird. Somit benötigen wir nur ein Programm zum toggeln.

D.h. das Programm in der CCU besteht nur aus der Aktion, das folgende Script auszuführen:

Copy to Clipboard

Auch für dieses Programm ist wichtig, dass es nicht auf "aktiv" gesetzt wird, damit der Wert nur durch das manuelle Betätigen geändert wird.

Das manuelle Ausführung führt nun zu dem gewünschten Ergebnis, der Wert wird immer auf den anderen Wert geändert und wir brauchten nur ein Programm.

Lösung 3

Nutzt einfach einen virtuellen Kanal.

Schreibt hierzu ein einfaches kleines Programm, welches bei einem kurzen Tastendruck auf dem virtuellen Kanal folgendes Programm ausführt:

Virtueller Taster