Hallo Gemeinde,
ich habe mit dem umgebauten Zeitskript von Philip Probleme.
Das Skript erstellt einen Timer ohne Zuordnung des Skriptes.
function TimerDelay($id, $time, $bus) {
global $IPS_SELF;
$sekunden=intval(substr($time, 0,-3));
$msekunden=substr($time, -3, 3);
$timerid = IPS_GetObjectIDByName($bus.$id, $IPS_SELF);
if ($timerid ==0)
{
$newtimer = IPS_CreateEvent(1);
IPS_SetEventScript($newtimer, $IPS_SELF); //Aktuelles Skript aufrufen
IPS_SetName($newtimer, $bus.$id);
IPS_Sleep(intval($msekunden));
IPS_SetEventCyclic($newtimer, 0, 0, 0, 0, 1, $sekunden);
IPS_SetEventCyclicDateBounds($newtimer, 0, 0);
IPS_SetEventCyclicTimeBounds($newtimer, time(), 0);
IPS_SetEventActive($newtimer, true); //Ereignis aktivieren
}
else
{
IPS_Sleep(intval($msekunden));
IPS_SetEventCyclic($timerid, 0, 0, 0, 0, 1, $sekunden);
IPS_SetEventCyclicDateBounds($timerid, 0, 0);
IPS_SetEventCyclicTimeBounds($timerid, time(), 0);
IPS_SetEventActive($timerid, true); //Ereignis aktivieren
}
Die Zeile
IPS_SetEventScript($newtimer, $IPS_SELF); //Aktuelles Skript aufruf
scheint bei mir nicht das zu machen, was sie soll. Leider vertstehe ich die beschreibung in der Doku auch nicht ganz.
Ich habe die Zeile so geändert:
IPS_SetParent($newtimer, $IPS_SELF); //Aktuelles Skript aufruf
Damit wird jetzt auf das Shutter Skript der Timer korrekt angelegt.
Was ist bei mir falsch, weil das originale Skript nicht funktioniert?
Gruß Thomas