Nächstes Ereignis in Ereignis-Wochenplan ermitteln?

Hallo,

ich will das nächste anstehende Event im Wochenplan (Ereignis) betimmen. „Nextrun“ ist klar, aber gibts ne Möglichkeit das nächste für eine bestimme ID zu ermitteln?
Ich steuere 6 verschiedene Geräte in einem Wochenplan und will für ein bestimmtes Gerät (bzw. letztlich für jedes der Geräte) die nächste anstehende (gerne auch die letzte) Startzeit bestimmen.
Das über IPS_GetEvent darstellbare Array ist rechts komplex. Bevor ich das Rad neu erfinde, viellicht hat von euch ja schon jemand ne Lösung?

Gruß und schönen Vatertag

hardlog

Du musst mal etwas mehr suchen. Das hatten wir schon mal, aber ich finde es gerade auch nicht.

Edit: z.B. hier

Dank, das hab ich schon gefunden.

Aber, wenn ich es richtige durchschaue, kann ich damit aber nicht den nächsten Schaltzeitpunkt einer bestimmten ActionID bestimmen…

Hallo,
die Lösung könnte so aussehen wenn ich dich richtig verstanden habe


$ID = 19941 /*[TEST\SCHICHTPLAN\TEST]*/;
$test = GetWeekplanNextActionIDEvent($ID, 5, time());
print_r($test);

… die Funktion baut auf „GetWeekplanState“ auf

function GetWeekplanNextActionIDEvent($ID, $ActionID, $SysTimePoint=NULL)
 {
   if($SysTimePoint == NULL)
     {
      $SysTimePoint = time();
     }
 
     $SysTimePoint1 = $SysTimePoint;
 
     do{
        $State = GetWeekplanState($ID, $SysTimePoint1);
		$SysTimePoint1 = $State['EndSysTime'];
       } 
     while(    ($ActionID != $State['ActionID'] || $State['StartSysTime'] <= $SysTimePoint) 
	         && $State['StartSysTime'] <= $SysTimePoint+86400*7); 

    $State['CheckSysTime']   = $SysTimePoint;
    $State['CheckTime']      = date("d.m.Y H:i:s",$State['CheckSysTime']);

   //Gesuchte ActionID wird nicht gefunden ==> aktuelles Event zurueckgeben
   if ($ActionID != $State['ActionID'])
      {
        $State = GetWeekplanState($ID,$SysTimePoint);
      }
	  
   return($State);
 }

Viel Spass
tgusi74

Danke tgusi74@

kann ich so nutzen!

Gruß
hardlog