Hallo zusammen,
ich bin noch relativ am Anfang was meine PHP Kenntnisse betrifft. Ich habe zu meiner Herausforderung auch die Suche bemüht und einige Treffer gefunden, die zwar in eine ähnliche Richtung gehen, aber dann doch nicht so ganz passen. Falls ich da nicht ordentlich gesucht habe, freue ich mich auf einen Hinweis zum entsprechenden Thread.
Ich möchte gerne ein möglichst generisches Skript haben, dass bei jedem öffnen eines Fensters einen (eigenen) Timer startet und mir nach 900 Sekunden mitteilt, dass das Fenster noch offen ist.
Mein erster Schritt war in etwa dieses Skript:
<?
//$VariableID = array(31553, 34053, 56835, 42785, 53123, 21124, 48802, 43749, 47486 );
//$Ausloeser = $_IPS['VARIABLE'];
$Ausloeser = $_IPS['VARIABLE'];
$AusloeserE = $_IPS['EVENT'];
echo $Ausloeser;
echo $AusloeserE;
$status = $Ausloeser;
//$status = GetValueBoolean(16129); // Deine Alarm Boolean Variable
$time = 900; // Zeit in Sekunden für den Timer
If ($_IPS['SENDER'] == "Variable" or $_IPS['SENDER'] == "EVENT")
{
If ($status == True)
{
IPS_SetScriptTimer($_IPS['SELF'],$time);
}
else
{
//mach nix
}
}
else
{
echo "Dieses Sript kann nur entweder durch eine Variable oder ein Timerevent gestartet werden";
}
If ($_IPS['SENDER'] == "TimerEvent") // Wenn das Script durch den Timer gestartet wird
{
If ($status == True)
{
//Hier das rein, was nach ablauf des Timers passieren soll, wenn die Variable immer noch auf True steht
IPS_SetScriptTimer($_IPS['SELF'],0); // Timer ausschalten
echo "15 Minuten auf";
}
else
{
IPS_SetScriptTimer($_IPS['SELF'],0); // Timer ausschalten
}
}
else
{
}
?>
Das ganze habe ich als Skript angelegt und an das Ereignis des Fensterstatus gehängt.
Das funktioniert auch, es wird ein Timer angelegt.
Was mir aber fehlt ist die Referenz auf den jeweiligen Fensterkontakt der den Timer gestartet hat. Das merke ich insbesondere daran, dass die Prüfung im TimerEvent Teil
If ($status == True)
fehlt schlägt, da $status ja nicht mehr bekannt ist, da das Skript im zweiten Durchlauf ja durch den TimerEvent aufgerufen wird.
Habt Ihr eine Idee, wie ich das lösen kann?
Grüße
Dominic