Ereignis alle 8 Wochen

Hallo,

stehe mal wieder auf dem Schlauch:
Ich will ein Ereignis alle 8 Wochen starten: IPS_SetEventCylic …
Nicht an einem bestimmten Tag sondern ab Ausführung des oben genannten Befehls alle 8 Wochen…

Kann mir jemand mit den Parametern helfen:

IPS_SetEventCyckic(ID,4,…???)

Danke
hardlog

Ungetestet:


$Timer_ID = IPS_CreateEvent(1);
IPS_SetName($Timer_ID, "Test");
IPS_SetParent($Timer_ID, $_IPS['SELF']);
IPS_SetEventCyclicTimeFrom($Timer_ID, (int)date("H"), (int)date("i"), (int)date("s") ); 
IPS_SetEventCyclicDateFrom($Timer_ID, (int)date("d"), (int)date("m")+2, (int)date("Y") );
$zeit_arr = array($Timer_ID,3,8,1+2+4+8+16+32+64,0,0,0);
IPS_SetEventCyclic($zeit_arr[0],$zeit_arr[1],$zeit_arr[2],$zeit_arr[3],$zeit_arr[4],$zeit_arr[5],$zeit_arr[6]);
IPS_SetEventActive($Timer_ID, true);

Habs nochmal geändert, so sollte es passen.:wink:

Hallo Ferengi-Master,

Danke für die rasche Antwort.
So ganz verstehe ich es noch nicht. Mit deinem Script wird in 8 Wochen den Tagen Montag, Dienstag…

Ich möchte eigentlich nur ein Zyklisches Ereignis, das JETZT in 8 Wochen (bzw. ab jetzt alle 8 Wochen) auslöst.
Ich hab mal folgendes:

IPS_SetEventCyclic(13703,3,8,1,0,0,0);
IPS_SetEventActive(13703, true);

So wird MONATG in 8 Wochen das Script ausgelöst, wie kann ich es in „genau“ 8 Wochen (56 Tagen) erreichen??

Gruß
hardlog

o.k. ich habs gerade mal getestet, mein o.g. Script ist noch nicht ganz richtig, da gehört noch ein wenig Datumsberechnung dazu, ich kann gerade nicht ganz nachvollziehen warum das paresy so kompliziert gelöst hat…:rolleyes:
Aber vieleicht ist es auch ganz einfach und wir sehen den Wald vor Bäumen nicht.:frowning:

Ich hätte es ja am liebsten mit: IPS_SetScriptTimer($_IPS[‚SELF‘],60602478); gelöst, das geht aber nicht, warum auch immer? (evtl. ein Bug?)

Warum geht das nicht?
Also zumindest wird bei mir der Scripttimer korrekt auf 4838400 Sekunden eingestellt :eek:

Hallo @nancilla,

Mit IPS_Scripttimer ist laut „Ereignis Informationen“ der „Nächste Aufruf“ nicht 8 Wochen später sondern 24h später. Schein so nicht zu gehen.

gruß
hardlog

Hallo
Wie waere es mit dieser Loesung

	$TimerId = 40313;
	
	$now = time();
	echo "
" . date('d.m.Y H:i:s',$now);
	$next = $now + ( 60 * 60 * 24 * 7 * 8  );
	echo "
" . date('d.m.Y H:i:s',$next);

	$tag     = intval(date('d',$next));
	$monat   = intval(date('m',$next));
	$jahr    = intval(date('Y',$next));
	$stunde  = intval(date('H',$next));
	$minute  = intval(date('i',$next));
	$sekunde = intval(date('s',$next));

	IPS_SetEventCyclicDateFrom($TimerId,$tag,$monat,$jahr);
	IPS_SetEventCyclicTimeFrom($TimerId,$stunde,$minute,$sekunde);

Nicht wundern , ist eine Stunde Zeitdifferenz wegen Sommerzeit.

Warum geht das nicht?

Schau mal in die Timerinformationen nächster Aufruf…

@1007 sieht ganz gut aus, ich finde das aber Ansich zu kompliziert für eine eigentlich so einfache Sache.
Vieleicht sagt der große Meister nach seinem Urlaub mal was dazu.

Mir waere sowas auch lieber:

IPS_SetScriptTimer($TimerId,$UnixTimestamp);

Wie gesagt, ich kann nicht ganz nachvollziehen warum: IPS_SetScriptTimer($_IPS[‚SELF‘],60602478); nicht gehen soll… Laut Doku steht dem eigentlich nichts im Weg.

Ihr habt mich überzeugt;)

Ich habs mal nachvollzogen…

<?
$start = IPS_GetEvent(Event-ID);
echo date("m.d.y - H:i:s", $start['NextRun']);
?>

Ist ein Bug.

Damit kannst du genau ab jetzt alle 8 Wochen (=alle 8*7 Tage) etwas ausführen:


$Timer_ID = IPS_CreateEvent(1);
IPS_SetName($Timer_ID, "Test");
IPS_SetParent($Timer_ID, $_IPS['SELF']);
IPS_SetEventCyclicTimeFrom($Timer_ID, (int)date("H"), (int)date("i"), (int)date("s") );
IPS_SetEventCyclicDateFrom($Timer_ID, (int)date("d"), (int)date("m"), (int)date("Y") );
IPS_SetEventCyclic($Timer_ID,2,8*7,0,0,0,0);
IPS_SetEventActive($Timer_ID, true);

Der ScriptTimer ist nur für Intervalle sinnvoll die kleiner als einen Tag sind. (Im Prinzip ist er für Intervalle < 1h gedacht) Intervalle, die über die Tagesgrenze hinaus gehen, sind nicht Möglich. Ich werde diesbezüglich die Dokumentation verfeinern. Übrigens ist diese Limitation vom SkriptTimer schon seit der 2.0 vorhanden. Interessant, dass dies vorher noch keiner so ausprobiert hat.

paresy

Hallo zusammen,

es gibt Start-und Endzeit für zyklisches Ereignis aber nicht für ein ausgelöstes, deswegen möchte ich bestimmte Ausführungszeit eingeben (bzw. abfragen).

Wie kann ich das machen :confused: ?

Vielen Dank

Grüß
Michael

Im Skript mit einer if-Bedingung, dem Ereignis isses egal :wink:

Gruß
Bruno