Dokumentation
IPS_SetEventCyclic
boolean IPS_SetEventCyclic (int $EreignisID, int $Datumstyp, int $Datumsintervall, int $Datumstage, int $Datumstagesintervall, int $Zeittyp, int $Zeitintervall)
Parameterliste
EreignisID | ID des zu verändernden Ereignisses |
||||||||||||||||
Datumstyp |
|
||||||||||||||||
Datumsintervall |
|
||||||||||||||||
Datumstage | | Beschreibung | | Tabelle: Tageswerte
|
||||||||||||||||
Datumstagesintervall |
|
||||||||||||||||
Zeittyp |
|
||||||||||||||||
Zeitintervall |
|
Rückgabewert
Konnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.
Beschreibung
Um ein zyklisches Ereignis zu konfigurieren, muss festgelegt werden, in welchen Intervallen dieses ausgeführt werden soll. Dazu gehört ein Datumsintervall, welches das Intervall in einem bestimmten Tages-, Wochen-, Monats- oder Jahresrythmus festlegt und ein Zeitintervall, welches an dem jeweiligen Tag ein sekunden-, minuten- oder stundenbasierendes Intervall festlegt.
Wird das Datumsintervall als “Woche” gewählt, so besteht die Möglichkeit die Tage der Woche zu bestimmten an denen das Ereignis gestartet werden soll. Bei Monatlichem oder Jährlichem Datumsintervall kann der Tag im Monat/Jahr im Parameter Datumswert angegeben werden. Bei allen anderen Typen kann der Parameter mit dem Platzhalter 0 angegeben werden.
Spitzfindigkeiten:
- (Monatlich) Bei der Variante “Am X. Tag alle Y Monate” bedeutet X > 31, dass der letzte Tag im Monat gewählt wird. Wenn z.B. für X = 31 ausgewählt wird, so werden nur Monate berücksichtigt, die 31 Tage haben.
- (Monatlich) Bei der Variante “Am X. Wochentag alle Y Monate” bedeutet X >5, dass die letzte Woche gewählt wird. Wenn z.B. für X = 5 ausgewählt wird, so werden nur Monate berücksichtigt, die einen jeweiligen 5. Wochentag haben.
- (Jährlich) Bei der Variante “Am X. Monat” wird ein Timer nur ausgeführt, wenn X ein gültiger Tag in diesem Monat ist, andernfalls wird der Timer nicht ausgeführt.
Beispiel
//Zum aktuellen Zeitpunkt alle 8 Wochen etwas ausführen
$eid = IPS_CreateEvent(1);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclicTimeFrom($eid, (int)date("H"), (int)date("i"), (int)date("s"));
IPS_SetEventCyclicDateFrom($eid, (int)date("d"), (int)date("m"), (int)date("Y"));
IPS_SetEventCyclic($eid, 2 /* Täglich */ , 8 * 7 /* Alle 8 Wochen */,0,0,0,0);
IPS_SetEventActive($eid, true);
//Jeden Tag alle 6 Stunden ab 0 Uhr
$eid = IPS_CreateEvent(1);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclic($eid, 2 /* Täglich */, 1 /* Jeden Tag */, 0, 0, 3 /* Stündlich */, 6 /* Alle 6 Stunden */);
//Alle 2 Minuten ab 0 Uhr bis 12 Uhr
$eid = IPS_CreateEvent(1);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclic($eid, 0 /* Keine Datumsüberprüfung */, 0, 0, 2, 2 /* Minütlich */ , 2 /* Alle 2 Minuten */);
IPS_SetEventCyclicTimeTo($eid, 12, 0, 0);
//Alle 2 Minuten zwischen 8 Uhr und 10 Uhr
$eid = IPS_CreateEvent(1);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclic($eid, 0 /* Keine Datumsüberprüfung */, 0, 0, 2, 2 /* Minütlich */ , 2 /* Alle 2 Minuten */);
IPS_SetEventCyclicTimeFrom($eid, 8, 0, 0);
IPS_SetEventCyclicTimeTo($eid, 10, 0, 0);
//Alle 2 Wochen am Montag+Mittwoch einmalig um genau 0:00 Uhr
$eid = IPS_CreateEvent(1);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclic($eid, 3 /* Wöchentlich */, 2 /* Alle 2 Wochen */, 1+4 /* Montag (1) + Dienstag (4) */, 0, 0, 0);
//Täglich um 15 Uhr
$eid = IPS_CreateEvent(1);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclicTimeFrom($eid, 15, 0, 0);
//Am ersten Tag im Monat um 0 Uhr
$eid = IPS_CreateEvent(1);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclic($eid, 4 /* Monatlich */, 1 /* Jeden Monat */, 0 /* Egal welcher Tag */, 1 /* Erster Tag im Monat */, 0, 0);
//Am ersten Freitag im Monat um 0 Uhr
$eid = IPS_CreateEvent(1);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclic($eid, 4 /* Monatlich */, 1 /* Jeden Monat */, 16 /* Am Freitag */, 1 /* Erster Freitag im Monat */, 0, 0);