Einschaltverzögerung

Hallo,

Ich möchte eine Einschaltverzögerung realisieren. Allerdings keine speichernde!

Im Prinzip total einfach. Ich drücke einen KNX Taster für z.b. 10 Sekunden. Solange ich diesen Taster gedrückt halte steht die KNX Gruppenadresse und somit die dementsprechende IPS Variable auf true. Sind diese 10 Sekunden erreicht möchte ich ein Script ausführen.
Gehe ich jedoch vor ende dieser 10 Sekunden von dem Taster wechselt die Variable auf false und ich möchte den Vorgang abbrechen.
Somit darf nur etwas passieren wenn ich wirklich 10 Sekunden am Stück die Variable auf true halte.

Leider bekomme ich das nicht hin. Kann mir da jemand helfen?

Cheers!
Chris

Wenn es nicht auf tatsächlich 10 Sekunden, sondern nach 10 Sekunden (immer) noch ankommt,
könntest du mit Variablenwechsel ein Script starten. Darin dann einen Timer setzen, welcher nach 10 Sekunden (ggf. in einem anderen Script) abfragt, ob die Variable derzeit noch (oder schon wieder) auf true sitzt.
Ist dies erfüllt, wird die Aktion ausgeführt. Ich habe etwas ähnliches bei mir für die Fertigmeldung vom Trockner in Betrieb.

Dazu das unten liegende Script mit 5 Minuten.


<?
if(GetValue(59727 /*[Client Socket AVR-net\Trockner]*/)){
    if($IPS_SENDER == "TimerEvent"){
          SetValueBoolean(57812 /*[Räume\Türen\Variablen\Wäsche\Trockner]*/ ,true);
          //Timer ausschalten
          IPS_Sleep(200);
          IPS_SetScriptTimer($_IPS['SELF'], 0);
     }else{
      //Timer anschalten
      if(IPS_GetScriptTimer($_IPS['SELF'])==0)
          IPS_Sleep(200);
          IPS_SetScriptTimer($_IPS['SELF'], 60*5);
     }

}else{
    IPS_Sleep(200);
    IPS_SetScriptTimer($_IPS['SELF'], 0);
    SetValueBoolean(57812 /*[Räume\Türen\Variablen\Wäsche\Trockner]*/ ,false);
}
?>

Habe hier keinen KNX Taster liegen. Wechselt die Variable denn schon wie gewünscht? Also geht wieder auf false, wenn man los lässt?

Gruß

Andreas

Hab in der Zwischenzeit auch was gebastelt.

Script unter der Tastervariable anlegen und ein Ereignis auf Variablenänderung drauf packen:


<?

$taster = IPS_GetParent($IPS_SELF);

if($IPS_SENDER == "Variable") {
  if($IPS_VALUE == true) {
    IPS_SetScriptTimer($IPS_SELF, 10);
  } else {
    IPS_SetScriptTimer($IPS_SELF, 0);
  }
}

if($IPS_SENDER == "TimerEvent") {
  IPS_LogMessage("Einschaltverzögerung", "Schalte hier irgendwas ein.");
  // EIB_Switch...
  IPS_SetScriptTimer($IPS_SELF, 0);
}

?>

Gruß

Andreas