Mich hat schon immer die umständliche Handhabung von relativen Timern in IPS gestört.
Man nehme zum Beispiel eine Beregnungssteuerung. Ich schalte die Bewässerung zu einem beliebigen Zeitpunkt ein und möchte das sie sich nach z.B. 5 Minuten automatisch wieder ausgeschaltet.
Das folgende Script ermöglicht eine einfache Handhabung des ganzen Themas
1.) Manuel eine Integer Variabale erstellen in der das Script dann die ID des Ereinisses ablegt.
Das folgende Timer Script abspeichern :
<?
include "IPSLogger.ips.php";
define( "c_LogId", "Timer" );
$EventActive = false;
/* Erzeuge einen Timer Event */
$eid = IPS_CreateEvent( 1 );
$EventActive = IPS_EventExists(GetValueInteger($TIMERID));
if ($EventActive)
{
IPS_DeleteEvent( GetValueInteger($TIMERID) );
echo ( "Der alte Timer wurde gelöscht " );
IPSLogger_Inf( c_LogId, " Alter Timer wurde glöscht " );
}
else
{
echo ( "Es gab keinen altenTimer " );
IPSLogger_Err( c_LogId, " Es gab keinen alten Timer " );
}
SetValueInteger($TIMERID,$eid );
IPS_SetParent( $eid, $PARENT); //Ereignis zuordnen
IPS_SetEventCyclic( $eid, 1, 0, 0, 0, 0, 0 );
IPS_SetEventCyclicDateBounds( $eid, (time() + $DELAY ),0 );
IPS_SetEventCyclicTimeBounds( $eid, (time() + $DELAY ),0 );
IPS_SetEventActive( $eid, true );
echo ( " Der neue Timer wurde kreiert " );
IPSLogger_Inf( c_LogId, "Neuer Timer erstellt" );
?>
Das ganze kann jetzt wie folgt aufgerufen werden :
IPS_RunScriptWaitEx(12345,Array(„TIMERID“ => 23456, „PARENT“ => 67890, „DELAY“ => 123));
12345 ist die ID des Timer Scripts
TIMERID ist die ID der Variablen die Ihr angelegt habt
PARENT ist die ID des Scripts das Ihr zeitverzögert starten wollt
DELAY ist die Verzögerung in sekunden
Vorschlag von Paresy eingebaut