Frage: Allgemeine Eventsteuerung wie realisieren?

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

Hallo

da gabs doch schon viele ähnlich Anläufe.
Ich erinnere mich zb. an Versuche Events per outlook oder google kalender zu triggern. Auch eien Exceltabelle als Basis geisterte mal rum. Damals gings Heizungssteuerungen.

passenden Thread hab ich jetzt aber keinen parat, müßtest ein wenig suchen.

gruß
bb

Du meinst sicher sFHT und Co. Mich hatte das Konzept mit manuell zu erstellenden Parameterdateien auch nicht wirklich überzeugt. :rolleyes:

@bb:
Ich habe diese Therads (teilweise) gelesen, allerdings war dort de Fokus , soweit ich das verstanden habe, eher der, „wirkliche“ Kalenderfunktionen in IPS rein zu bringen, wie „Mülltonne rausstellen“ oder „Kinder zu Bett bringen“ und weniger eine Ablaufsteuerung.

Bei mir geht es aber gerade um die Logiksteuerung des Hauses per se und eigentlich gar nicht um echte Kalneder. Messages wären vielleicht ein „Abfallprodukt“ aber keinesfalls der Fokus.

Die Darstellung in dem von mir überlegten „Ziel-Controller“ wäre auch eher ein Balkendiagramm denn ein Kalender, denn viele der Funktionen eines Hauses laufen ja auch nachts ab (z.B. Gartenbewässerung, Aufarbeiten von Daten, Logs etc.).

jwka

Also die Idee ist nicht neu und ja ich glaube viele hatten es auch mal vor, so wie ich auch.

Mir schwebte ein Cron-ähnliches Script vor, das minütlich ausgeführt wird und in einer Cron-Table nachschaut, ob es einen Task gibt der ausgeführt werden soll.

Allerdings werde ich das Problem erst nach der installation meiner Gartenbewässerung angehen können…

Zumal die Lösung sicher nur für Leute mit externer DB interessant ist.

Die Idee ist nicht neu, das stimmt.

Aber vielleicht wäre das mal ein Ansatz für ein forums-projekt? Vielleicht findet ja ein gemeinsam entwickelter Ansatz entsprechend breite Untersützung und wird eine sehr universelle Sache?

Dass dafür ne DB zwingend nötig ist, glaube ich eigentlich nicht, wobe, wenn wir die Schnittstelle entsprechend auslegen, nichts dagegen spricht, sowas file- oder DB basiert zu machen.

Das Einfügen von weiteren Events wäre mit ner DB-basierten Lösung natürlich „ein Klacks“.

jwka

Als ich wäre dabei…

man könnte ja erstmal mit der Definition der Task und Steuerung in IPS anfangen und später die Erweiterungen nachpflegen…

Könnte mir auch eine Servicelösung für die Cron-Tabelle vorstellen…

Na, dann warten wir doch mal, ob Resonanz hier kommt.

Meine Überlegung war, eine möglichst schlanke „Event-Identification“ prozedur zu haben, die dann entweder die custom functions aufruft oder eine eigene handling-routine nachlädt. Ersteres hätte den Vorteil, dass es leicht für bestehende Anwendungen mit vorhandenen Scripts zu nutzen wäre. Di müssten gar nicht oder nur geringfügig (Parameterübergabe) angepasst werden

Über ein „Ticket“, das aus Identifier und Ticket-Daten besteht sowie wenigen Event-Daten wie Datum/Uhrzeit, „Chained/Parallel“ etc. wäre eine schnelle Routine möglich, die im Leerlauffalle kaum oder gar keine Ressourcen frisst.

Einzig der Fall, dass zur selben Laufzeit viele Events „gechained“ (nacheinander) auszulösen sind, macht mir noch ein bischen Kopfzerbrechen wegen der Laufzeiten des Scripts und bei „parallels“ wegen der max. Anzahl paralleler Threads.

Man könnte das natürlich durch „Restrictions“ verhindern, deren Logik in das Vormodul zur Erstellung der „next Events“ gesetzt wird. Dann bräuchte die eigentliche zyklische Routine nur wenig zu tun.

jwka