Zyklisches Ereignis einmalig innerhalb eines Zeitintervalls

Hallo,

würde gern täglich ein Ereignis auslösen. Es soll einmalig innerhalb eines Zeitintervalls und NICHT um eine exakt definierte Zeit ausgelöst werden.

Ziel ist es also, dass das Ereignis täglich zwischen 8 und 9 Uhr ausgelöst wird, also nur 1x pro Tag zufällig zu irgendeinem Zeitpunkt innerhalb des Intervalls.

geht das irgendwie mit einfachen Mitteln?

Ich mache ähnliches mit der Markise. Die soll nur einmal pro Tag ausgefahren werden, wenn die Sonnen einen gewissen Winkel überschreitet und der definierte Schwellwert der Sonneneinstrahlung erreicht ist. Da kann es passieren, dass sie erst gegen Mittag ausfährt, weil es vielleicht bewölkt war. Fahr ich sie aber ein, soll sie nicht mehr ausgefahren werden.
Ich mache das mit einem Ablaufplan, in dem nach erfolgreichen Öffnen, das Erignis inaktiv geschalten wird.


Im Bild ist es Punkt 7 wenn die Markise ausgefahren ist.
Um Mitternacht läuft bei mir ein Ablaufplan, der einige Dinge macht. Unter anderem genau dieses Ereignis wieder auf aktiv schalten, für den nächsten Tag.

Dann hast du aber eine definierte Helligkeit und einen definierten Sonnenwinkel.

Ich will ja nur eine Zeitabhängigkeit, aber nicht jeden Tag die gleiche (z.B 08:13) sondern genau 1x zwischen 08:00 und 09:00

Im Zweifel als Dirty Lösung mit IPS_Sleep und einem PHP Skript, und dort dann per rand() eine Zeit zwischen 0 und 3600 und so lange lässt du das Skript schlafen. Ereignis startet dann um 8 und per Rand wird dann irgendwann dazwischen der Inhalt ausgeführt.

Im Ablaufplan gibt es unter „Experte“ auch die Funktion „Warten (Variable)“. Man müsste dann nur täglich diese Verzögerungs- Variable mit einem Zufallswert befüllen, was per Script einfach möglich sein sollte.

besten Dank euch für die Vorschläge.

mir schien der von Migo recht einfach umzusetzen:
Zyklisches Ereignis um 08:00 Uhr führt einfach folgendes Skript aus:

IPS_sleep(rand(0, 3600000)); //Verzögerung zwischen 0 und 60 min
RequestAction(xxxxx, xxxxx);

Puhhh, 60min den Task blockieren halte ich nicht so für eine gute Idee. Dann lieber per Scripttimer die Zeit einstellen. Aber jeder wie er möchte :innocent:

wie müsste ich das machen? ist das die idee die volkerm hatte?

ablaufplan mit warten (variable) und dann aktion
und
eine variable die täglich neu festgelegt wird zwischen 0 und 60

Du nimmst ein Skript und startest dieses täglich um 8 Uhr. Dieses Skript setzt einen Skripttimer mit zufälligem Wert auf sich selbst. Wird das Skript vom Timer aufgerufen, führst du die gewünschten Aktionen durch und deaktivierst den Timer.

Okay. Klingt von der logik ähnlich wie der vorschlag von volkerm.

Hat die eine oder andere art der Ausführung vor-/nachteile?

Ich hab jetzt nach dem einwand gestern ein skript gemacht das täglich in eine variable eine zufallszahl zwischen 0 und 60 schreibt.

Für meinen eigentlichen befehl habe ich einen ablaufplan eingerichtet der erstmal die dauer der variable wartet bevor der befehl ausgeführt wird

Ich habe jetzt nicht geschaut ob es vielleicht Sekunden sein müssen, das müsstet du selbst prüfen.

Was den Vorschlag von @DerStandart angeht, so ist das im Ergebnis identisch. Die Codierung des Scripttimer-Selbstaufrufs über Code, den er meint, ist halt wenig intuitiv.

Im ablaufplan kann man wählen
Millisekunden
Sekunden
Minuten
Stunden

Besten dank euch allen. Läuft schon einwandfrei

1 „Gefällt mir“