Was wird benötigt? Ein CUxD-Timer, drei Systemvariablen (2x Werteliste, 1x Logikwert) und ein Programm mit Script.
Die Systemvariablen für die Eingabe der Uhrzeit sind vom Typ „Werteliste“ und beinhalten die Stunden von 00 bis 23 Uhr zur Auswahl.
Um den Wecker noch bedienerfreundlich mit der Auswahl per Werteliste zu halten, habe ich mich auf zwölf Werte im Fünf-Minuten-Raster beschränkt (00 bis 55).
Um den Wecker in Programmen auch gezielt aktivieren und deaktivieren zu können, benötigt man eine dritte Systemvariable vom Typ Logikwert (hier für das Schlafzimmer). Ich habe noch eine zusätzliche für das Kinderzimmer und kann somit die Wecker auf die gleiche Uhrzeit beliebig zu- und abschalten. Man kann auch mehrere hinzufügen und in Programmen verwenden. Allerdings benutzen alle die gleiche Weckzeit.
Das dazugehörige Programm mutet etwas merkwürdig an. Damit es funktioniert, muss es aber Im "Wenn" mit Parametern konfiguriert sein, deren Prüfung nie eine wahre Konstellation ergeben, aber das Sonst bei jeder Änderung an den beteiligten Systemvariablen ausführen. Dieses habe ich dadurch erreicht, dass die Stunden nie gleichzeitig „00“ und „01“ ausgewählt sein können. Im „Sonst“ wird das Script hinterlegt, welches den CUxD-Timer mit der aus den Systemvariablen der Wertelisten ausgewählten Uhrzeit beschreibt.
Das erste „Dann“ der „Wenn“-Bedingung wird also nie ausgeführt und steht dort nur als Dummy drin. Anders sieht es mit dem „Sonst-Wenn“ aus. Hier wird der Timer gestoppt, wenn keine der Logikvariablen wahr ist. Das ist nicht unbedingt notwendig, aber etwas sauberer.
Und folgend das notwendige Script. Es beinhaltet keinerlei Fehlerbehandlung. Die möglichen „Eingabefehler“ sind ja durch die Benutzung von Wertelisten, die nur plausible Werte zulassen, schon stark eingeschränkt. Wichtig ist lediglich die korrekte Namensgleichheit mit den in der GUI verwendeten Systemvariablennamen. Die ersten drei Scriptzeilen nach der Überschrift deklarieren die Sciptvariable für die Stunden, lesen deren Wert aus und weisen den Inhalt aus der zugehörigen Werteliste der internen Scriptvariable „Std“ zu. In den drei weiteren folgenden Zeile wir das Gleiche für die Minuten („Min“) gemacht. In der vorletzten Zeile wird aus den ermittelten Daten ein String zusammengebaut, der in der letzten Zeile in einen CUxD-Timer geschrieben wird. Das war es schon.
Code: Alles auswählen
! Wertelisteninhalte für Stunden und Minuten in Wecker-Timer schreiben +++++++++
var SYSvar_hh = dom.GetObject("Wecker_HH");
var wert_hh = SYSvar_hh.Value();
var Std = web.webGetValueFromList(SYSvar_hh.ValueList(), wert_hh);
var SYSvar_mm = dom.GetObject("Wecker_MM");
var wert_mm = SYSvar_mm.Value();
var Min = web.webGetValueFromList(SYSvar_mm.ValueList(), wert_mm);
string timer_w = Std # ":" # Min #":" # "00";
dom.GetObject("CUxD.CUX2800001:6.TIMER_SET").State(timer_w);
CUX2800001:6).
Als letztes noch ein Beispielprogramm, wie der Wecker zu verwenden ist. In diesem Beispiel wird der Rollladen des Kinderzimmers bei Ablauf des Wecker-Timers und aktivierter Systemvariable für das Kinderzimmer hochgefahren.
Aus dem Beispiel ist auch ersichtlich, warum es nicht unbedingt notwendig ist, den Timer zu stoppen. Ein Auslösen des Timers würde ohne „wahre“ Logikvariable das „Dann“ nicht ausführen. Dieses ist bei der Verwendung von „Sonst“ in einem solchen Programm zu beachten. Darum ist es sinnvoll, den Timer auch bei Nichtverwendung zu stoppen.
Vielleicht hat ja jemand Verwendung dafür. Bei mir funktioniert es problemlos und ich greife damit in meine Rollladensteuerung ein, um auch unabhängig von der Verwendung der Zentralsteuerung "aller" Rollladen, einzelne zu separaten Zeiten hochzufahren. Der Nachwuchs mit Ferien dankt es, wenn der Rollladen nicht hochläuft, wenn die "Erzeuger" zum Broterwerb aufstehen.
Gruß Xel66