Hallo, ich seh grad den Wald vor lauter Bäumen nicht:
Ich möchte in einem Script einen Timer mit einem Intervall von 60s anlegen …normalerweise mache ich das wie unten gezeigt … und so hat es seit Ewigkeiten funktioniert… jetzt will der Timer nicht mehr, liegt wohl an der 5stelligen Übergabe von $duration… ??? Wie macht ihr das?
$name = "Sommerbetrieb => PPumpe steuern";
$duration = 60*1000; #1 Minute
TimerDelay($duration, $name);
.....
.....
function TimerDelay($duration, $name) {
#global $IPS_SELF;
$sekunden=intval(substr($duration, 0,-3));
$msekunden=substr($duration, -3, 3);
$timerid = IPS_GetObjectIDByName($name, $_IPS['SELF']);
if ($timerid == 0) {
$newtimer = IPS_CreateEvent(1);
IPS_SetName($newtimer, $name);
IPS_Sleep(intval($msekunden));
IPS_SetEventCyclic($newtimer, 0, 0, 0, 0, 1, $sekunden);
IPS_SetEventCyclicDateFrom($newtimer, 0, 0, 0);
IPS_SetEventCyclicDateTo($newtimer, 0, 0, 0);
IPS_SetEventCyclicTimeFrom($newtimer, (int)date("H"), (int)date("i"), (int)date("s"));
IPS_SetEventCyclicTimeTo($newtimer, 0, 0, 0);
IPS_SetParent($newtimer, $_IPS['SELF']); //Eregnis zuordnen
IPS_SetEventAction($newtimer, "{7938A5A2-0981-5FE0-BE6C-8AA610D654EB}", []);
IPS_SetEventActive($newtimer, true); //Ereignis aktivieren
}
else
{
IPS_Sleep(intval($msekunden));
IPS_SetEventCyclic($timerid, 0, 0, 0, 0, 1, $sekunden);
IPS_SetEventCyclicDateFrom($timerid, 1, 1, 2000);
IPS_SetEventCyclicDateTo($timerid, 0, 0, 0);
IPS_SetEventCyclicTimeFrom($timerid, (int)date("H"), (int)date("i"), (int)date("s"));
IPS_SetEventCyclicTimeTo($timerid, 0, 0, 0);
IPS_SetParent($timerid, $_IPS['SELF']); //Eregnis zuordnen
IPS_SetEventAction($timerid, "{7938A5A2-0981-5FE0-BE6C-8AA610D654EB}", []);
IPS_SetEventActive($timerid, true); //Ereignis aktivieren
}
}