Statusvariablen nach SwitchDuration zurücksetzen

Hallo Leute,

nachdem ich selbst und wie ich hier lesen kann, auch viele andere über dieses Problem stolpern, möchte ich das mal am Beispiel meiner Flurbeleuchtung erleutern!

Script Flurbeleuchtung:


/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Flur.PIRK2.ips.php
Trigger  : Sonnenuntergang
Interval : 600 s
Autor    : 
Datum    : 27.09.2005
Description:
Steuerung Flurlicht, Erzeugung der Anesenheitsmeldung!
*/
echo
$mLostMove = 3600; // 1 Stunde ohne erkannte Bewegung
$mPowerTime = 90; // Einschaltzeit in sec.
$mMove = GetValueBoolean("Flur.FS20PIRI_K1");
$mLastMove = GetValueInteger("Time_Move_Flur");
$mAnwesend = GetValueBoolean("JemandDa");
$mLichtFlur = GetValueBoolean("FlurLicht.Status");
$mTagNacht = GetValueBoolean("IstTag");
$mIstDunkel = GetValueBoolean("Wetter_IstDunkel");
$mFlurAuto = GetValueBoolean("LichtFlurAuto");
If ($mMove == True) {
   SetValueBoolean("Flur.FS20PIRI_K1", False);
   SetValueInteger("Time_Move_Flur", Time());
   SetValueBoolean("JemandDa", True);
// Beleuchtung einschalten wenn Bewegung, Nacht und Licht auf Automatik!
   If (($mIstDunkel == True) && ($mFlurAuto == True)) {
      FS20_SwitchDuration(41033, True, $mPowerTime);
      IPS_SetScriptTimer("Flur.Licht_RET", $mPowerTime);
   }
} Else {

// nach mLostMove Minuten --> keiner da !
   If ((Time() >= $mLastMove + $mLostMove) && ($mAnwesend == True)) {
      SetValueBoolean("Flur.FS20PIRI_K1", False);
      SetValueBoolean("JemandDa", False);
      }
}
?>

Über die Zeile :


      IPS_SetScriptTimer("Flur.Licht_RET", $mPowerTime);

wird folgendes Script gestartet, was die Statusvariable wieder zurück setzt:


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Flur.Licht_RET.ips.php
Trigger  : 
Interval : 
*/
SetValueBoolean("FlurLicht.Status", False);
IPS_SetScriptTimer("Flur.Licht_RET", 0);
?>

So ich hoffe euch damit geholfen zu haben!

Gruß Hofi