Ereignis Ausführungszeit überprüfen

Hi zusammen,

sorry für den Titel aber etwas besseres ist mir nicht eingefallen.
Ich habe folgendes Problem:

In Abhängigkeit einer Variable aktiviere ich je ein Ereignis, in diesem Falle ist es das Verschlissen der Rolladen. Wird also die Alarmanlage durch eine Variable aktiviert wird ein Ereignis mit einer früheren Zeit aktiviert sodas die Rolladen früher runterfahren falls ich nicht da bin.
Also, Alarmanlage aus -> Ereignis für 19:30 Uhr aktiv, Alarmanlage an -> Ereignis für 18:30 Uhr aktiviert.
Allerdings hab ich natürlich das Problem das wenn ich die Alarmanlage um 19:00 Uhr aktivere das Ereignis von 18:30 Uhr nicht ausgeführt wird. Das ist blöd weil die Rolladen dann natürlich offen bleibt.
Ich würde gerne in dem Script, das das jeweilige Ereignis aktiviert, checken ob der Zeitpunkt der Ausführung schon war. Mit IPS-GetEvent bekomme ich ja den lastrun allerdings kann der ja ewig weit zurückliegen.
Ich möchte also erfahren ob der Ausführungszeitpunkt eines Events am heutigen Tag schon war. (hoffe das ist verständlich)?

Nochmals um es vielleicht klarer darzustellen:
Ereignis 1, täglich 18:00 Uhr -> gerade deaktiviert
Ereignis 2, täglich 19:30 Uhr -> gerade aktiviert

Script A aktiviert Ereignis 1 und deaktiviert Ereignis 2. Wird Script A z.Bsp. um 19:00 Uhr ausgeführt wird die Aktion aus Ereignis 1 ja erst am nächsten Tag laufen. Daher würde ich gerne den Zeitpunkt von Ereignis 1 mit der aktuellen Uhrzeit abgleichen und ggsf. die Aktion aus Ereignis1 direkt mit Script A ausführen.

Danke für eure Denkanstösse!

Mit IPS_GetEvent den Lastrun auslesen. Wenn der vor mehr als 2 Stunden war, dann wurde das Event heute noch nicht ausgelöst, dann musst Du die gewünschte Aktion noch mal auslösen.

Dachte ich auch, aber es kann ja sein das Script A das letzte Mal vor einigen Tagen ausgeführt wurde und daher Ereignis 1 ja auch. Dann passt das wieder nicht.
Also z.Bps. lastrun war am 17.02.2018 um 17:00 Uhr, Ereignis soll(wenn aktiviert) täglich um 18:30 Uhr ausgeführt werden, Script wird am 19.02.2018 um 16:00 Uhr ausgeführt, dann sind ja mehr als x stunden vergangen, obwohl die 18:30 Uhr ja noch kommen, das passt also nicht…

Danke aber schonmal

Dann prüf doch einfach zusätzlich ob es vor 18:30 Uhr ist.

Du könntest auch über Switch Cases die jeweilige EventID auswerten und davon abhängig reagieren. So wie auf die EventID kannst du auch auf die VariablenID reagieren und damit nahezu alle Bedingungen abdecken, da du dann ja weißt, was wann das Script aufgerufen hat.

	
switch( $_IPS['SENDER'] ){
case "Execute":
	echo "Das geht so nicht! NUR über Variablen-Trigger oder Timer aufrufbar.";
	return(1);
break;
case "Variable":
...
break;
case "TimerEvent":
switch ($_IPS['EVENT']) {
case "43567":     // Nachtschaltung AKTIV 23:50
...
break;
case "43387":     // Morgen Event 05:10
...
break;
}

Hi,

danke für eure Hinweise, habs es jetzt etwas unkonventionelle gelöst, funktioniert aber und das ist das wichtigste.
Hier mal „Quick&Dirty“:


$array=array(12345 /*[Alarmanlage\Rolladen\Täglich um 18:50:00]*/,20508 /*[Alarmanlage\Rolladen\Täglich um 12:30:00]*/);
foreach($array as $id) {
$parent=IPS_GetParent($id);
$EreignisInfo = IPS_GetEvent($id);
$zeit_run= $EreignisInfo["CyclicTimeFrom"]["Hour"];
$zeit_run .= ":";
$zeit_run.=$EreignisInfo["CyclicTimeFrom"]["Minute"];
$timestamp_aktuell=time();
$zeit_aktuell = date("H:i", $timestamp_aktuell);
echo $zeit_aktuell." zu ".$zeit_run;

if ($zeit_aktuell >= $zeit_run)
{
echo " daher vorbei\r";
IPS_RunScript($parent);
}
else
{
echo " daher nicht vorbei\r";
}
}

Ergebniss ist z.Bsp:


14:44 zu 18:50 daher nicht vorbei
14:44 zu 12:30 daher vorbei

und der Parent des 2. Ereignisses wurde ausgeführt!
Danke für die Hilfe und sorry für die Umstände!

Gruß