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