CCU Timer
Verfasst: 09.03.2011, 14:02
Hallo,
nachdem ich mich nun eine Weile mit den Scriptfähigkeiten von HMScript und TCL beschäftigt habe ist mir "aufgefallen" dass es keine eingebaute Möglichkeit gibt, um Timer zu verwenden. Zumindest keine naheliegende. Wofür braucht man Timer? Betrachten wir folgendes:
In einem Haus sind mehrere Lichter "automatisiert", d.h. sie schalten sich morgens, wenns hell wird, ab, oder auch abends, wenn die "Nacht" beginnt (wie auch immer man das determiniert). Oder noch weiter gedacht, das Wohnzimmerlicht dimmt sich langsam runter, wenn man sich einen Film einschaltet (das Film einschalten ist bei mir über XBMC und JSON-RPC als Event detektierbar)
Nun kann es aber ja sein, dass gerade erst jemand das Licht manuell angemacht hat. Das wäre doof, wenn das dann 10 Sekunden später ausgeht, nur weil es jetzt eben soweit ist. Daher stelle ich mir vor, dass immer dann, wenn ein manueller Schaltwunsch ausgeführt wurde, man sich dieses für eine gewisse Zeit merkt und dann die automatische Verarbeitung so lange aussetztz bzw sperrt. Also z.B. Wenn Licht innerhalb der letzten 15 minuten manuell eingeschaltet, dann überspringe Aktor bei Automatismus....auf der anderen Seite wenn der Timer dann bei 0 ist soll der Automatismus wieder greifen (letzteres ist nicht das Problem).
Eine Möglichkeit, dies zu realisieren, sind Systemvariablen und zeitverzögerte Aktionen. Siehe Anhang. Der Anhang zeigt einen anderen Fall. Ich sage, sobald irgendein Knopf gedrückt wird (hier in dem Beispiel nur ein bestimmter Knopf) dann geh bitte mal davon aus, dass jemand anwesend ist. Wenn dann mindestens 10 Stunden keiner etwas tut, dann ist wohl niemand mehr da. 10 Stunden sind natürlich zu wenig. Aber hier gibts offenbar eine Limitation, dass die CCU nicht länger kann. Mit einer komplexeren Systemvariable kann man das zwar auch lösen, das ist aber etwas unschön (Das wäre dann: Setze nach 10 Stunden den Zustand "10 Stunden weg" - zweites SCript triggert darauf dass "10 Stunden weg" gesetzt wird und triggert dann nach weiteren 10 Stunden die Variable "20 Stunden weg" usw....
nachdem ich mich nun eine Weile mit den Scriptfähigkeiten von HMScript und TCL beschäftigt habe ist mir "aufgefallen" dass es keine eingebaute Möglichkeit gibt, um Timer zu verwenden. Zumindest keine naheliegende. Wofür braucht man Timer? Betrachten wir folgendes:
In einem Haus sind mehrere Lichter "automatisiert", d.h. sie schalten sich morgens, wenns hell wird, ab, oder auch abends, wenn die "Nacht" beginnt (wie auch immer man das determiniert). Oder noch weiter gedacht, das Wohnzimmerlicht dimmt sich langsam runter, wenn man sich einen Film einschaltet (das Film einschalten ist bei mir über XBMC und JSON-RPC als Event detektierbar)
Nun kann es aber ja sein, dass gerade erst jemand das Licht manuell angemacht hat. Das wäre doof, wenn das dann 10 Sekunden später ausgeht, nur weil es jetzt eben soweit ist. Daher stelle ich mir vor, dass immer dann, wenn ein manueller Schaltwunsch ausgeführt wurde, man sich dieses für eine gewisse Zeit merkt und dann die automatische Verarbeitung so lange aussetztz bzw sperrt. Also z.B. Wenn Licht innerhalb der letzten 15 minuten manuell eingeschaltet, dann überspringe Aktor bei Automatismus....auf der anderen Seite wenn der Timer dann bei 0 ist soll der Automatismus wieder greifen (letzteres ist nicht das Problem).
Eine Möglichkeit, dies zu realisieren, sind Systemvariablen und zeitverzögerte Aktionen. Siehe Anhang. Der Anhang zeigt einen anderen Fall. Ich sage, sobald irgendein Knopf gedrückt wird (hier in dem Beispiel nur ein bestimmter Knopf) dann geh bitte mal davon aus, dass jemand anwesend ist. Wenn dann mindestens 10 Stunden keiner etwas tut, dann ist wohl niemand mehr da. 10 Stunden sind natürlich zu wenig. Aber hier gibts offenbar eine Limitation, dass die CCU nicht länger kann. Mit einer komplexeren Systemvariable kann man das zwar auch lösen, das ist aber etwas unschön (Das wäre dann: Setze nach 10 Stunden den Zustand "10 Stunden weg" - zweites SCript triggert darauf dass "10 Stunden weg" gesetzt wird und triggert dann nach weiteren 10 Stunden die Variable "20 Stunden weg" usw....