Hallo,
ich würde gerne sowas wie eine generelle Eventsteuerung realisieren, in die dann solche Dinge wie Anwesenheitssimulation, Timer und auch automatische Szenarien (Rolladensteuerung, Lichtszenen Garten, Backup(s) anstossen) fallen.
Hierzu soll es ein (mehrere plus Auswahl-Steuerung dazu) File geben, in dem die Events sowohl von Hand, über eine (separate) Oberfläche und per Scripte eingepflegt werden können. Es schwebt mir vor, eine „hourly“ Datei zu haben mit den anstehenden Events der Folgestunde, die jeweils zu einer bestimmten Zeit umgeschrieben wird.
Zyklisch wiederkehrende Events werden dabei 24x am Tag in die jeweile Stundendatei eingetragen.
Zur Frage:
A.) Nun kann ich die Steuerung entweder so machen, dass diese Datei „gelegentlich“ oder sogar Event-Gesteuert (Änderungen sind eingetroffen) einmalig ausgelesen wird und dann die anstehenden Events generiert werden.
Zwei Nachteile:
1.) Es werden viele Events generiert (und müssen wieder gelöscht werden)
2.) Je Event wird noch eine Hilfsvariable fällig, in der die ggf. nötigen Parameter für „den run“ eingestellt werden müssen, die getriggerten Scripte müssen die auslesen.
Vorteil:
Events können Sekundengenau ausgeführt werden.
Weitere?
B.) Die Steuerung kann in kurzen Zyklen laufen (z.B. 5sek) und aus der Datei lesen, ob etwas zu tun ist
Vorteil: die Steuerdatei könnte Parameter beinhallten, welche an das aufgerufene Script übergeben werden.
Nachteil: Systembelastung und viel „unnützer“ Lauf, da ja wahrscheinlich 99% der Zeit gar keine Events anstehen.
C.) Abwandlung von A.):
Eine "Sub-Run-Struktur mit z.B. 10 Miniscripten plus deren Timern werden für die nächsten 10 anstehenden Events „programmiert“ und erhalten die Laufzeitdaten in Variablen zugewiesen. Wenn ein Event ausgelöst und fertig ist, holt er sich den nächsten Laufzeitpunkt selbst.
Problem: Wenn viele Events zum gleichen Zeitpunkt ablaufen sollen, könnte es zu einem merklichen Delay führen, weil neben der Ausführung der Scripte selbst auch noch das „nachladen“ nötig wird.
Oder: Habe ich vielleicht die eleganteste Möglichkeit übersehen? Oder etwas, das das schon macht?
Danke für Eure Kommentare!
jwka