du nimmst dir ein klitzekleines Programm:
Zeitmodul jetzt mittags ausserhalb der zeitspanne, triggerung nur prüfen.
richtigerweise wird das programm im Betriebsfall nie triggern (wäre auch ein typischer Anfängerfehler, Hilfe mein programm löst net aus)
ok, dann 2 scripteinzeiler
im Dann zweig:
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:1.SYSLOG").State("Ich war der dann Teil, Innherhalb der zeit");
und im Sonst Zweig:
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:1.SYSLOG").State("Ich war der Sonst Teil, ausserhalb der zeit");
Programm abspeichern und dann
reboot
was wird nun im Systemprotoll als Eintrag stehen ?
richitg, das hier:
Code: Alles auswählen
Aug 7 12:31:54 homematic-ccu2 daemon.info cuxd[575]: CUX2801001:1 Ich war der Sonst Teil, ausserhalb der zeit
und: es wurde wie erwartet der Sonst Teil abgearbeitet (logisch, die Zeit ist ja auch ausserhalb der zeitspanne)
Zu dervon dir beschriebenen Methode, ist die frage in wieweit solche Konstrukte dann Anfängertauglich und Alltagstauglich sind.
ich benutze bei mir (den Aufbau kennst du ja) folgende Struktur
(Ausschnitt aus einem realen programm auf meinem produktivsystem)
In der WebUI stehen alle bedingungen drin, die das Script auslösen können, (NICHT die Logig, nur die Trigger) alle verodert, am Ende allwaystrue ist immer wahr, so das ein trigger immer das Scriptr auslöst.
die Scriptstruktur ist dann folgende
Code: Alles auswählen
(...)
object oSRC = dom.GetObject ("$src$"); <<-- Hiermit wird der auslösende Trigger bestimmt, oder eben NULL
boolean bNeu = false; !- Neuberechnen
string sLogger = "logger -t AstroTriggerNeu -p user.debug ";
!- Überprüfen welcher Trigger das Script aufgerufen hatte
if (oSRC ) { !- Aufruf erfolgte mit gültigem SRC
if (oSRC.ID () == oRolloUp.ID () ) {
(...)
}
!- Aufruf ohne Trigger oder mit Mitternacht: --> Neu Berechnen Astro
if ((!oSRC) || bNeu) {
(...)
}
if (!oSRC) { <<-- das ist die erkennung, ob Progtamm manuell oder beim Booten aufgerufen wurde
!- Programm ohne Trigger aufgerufen beim Booten
!- Astrozustand berechnen
}
Black