Treppenhaustimer

Hallo Leute!
Ich verwende das Moeller Funksystem und möchte eine Lampe nach bestimmter Zeit automatisiert ausschalten, wie zb ein Treppenhausautomat.

Einen adequaten Switch-Duration Befehl hab ich bei Moeller nicht gefunden (übersehen?) und verwende nun den PHP-Befehl „sleep“ in einem Script, dass nach Einschalten der Lampe abläuft.

Ist es sinnvoll „sleep“ zu verwenden oder blockiere ich mir da den Rechner, wenn mehrere „Timer“ gleichzeitig ablaufen?

Gruß

Chris

Hallo Chris,

ich würde IPS_SetScriptTimer() verwenden. Wenn Du das Licht einschaltest den Timer in der gewünschten Zeit starten welcher dir dann das Licht wieder ausschaltet. Nicht vergessen den Timer dann wieder auf 0 zusetzen.

Hallo Chris

einen Switch duration befehl gibts glaube ich nicht.
Mit sleep kannst Du hier nicht viel machen, nach 30s macht IPS dem Script ein Ende. Zum glück. Einmal ne schleife falsch geschrieben und Du weißt warum :smiley:
Ausserdem gehen bei IPS „nur“ 10 Scripte gleichzeitig, was auch vollkommen langt.

Wie RWN schon geschrieben hat mach das ganze mit IPS_SetScriptTimer.
Hier hab ich zum beispiel mein Flurlichtscript mit 1x Taster Moeller 28195, 2xPiri(einmal Moeller 23304, einmal FS20 21052 und als aktor einmal Moeller 34952.

$modus = getvalue(36394 /*[EG\Treppenhaus\Schalter\Modus]*/);
if($IPS_SENDER == "Variable")
{
   
   //print $IPS_VARIABLE;
	switch ($IPS_VARIABLE)
   {
	Case '23304' :   //Piri Möller hell
	if ($modus == 2)
	return;
	MXC_SwitchMode(34952 /*[EG\Treppenhaus\Aktor]*/,true);
	IPS_SetScriptTimer($IPS_SELF,80);
	break;
 Case '21052' :   //Piri FS20 hell
	if ($modus == 2)
	return;
	MXC_SwitchMode(34952 /*[EG\Treppenhaus\Aktor]*/,true);
	IPS_SetScriptTimer($IPS_SELF,80);
	break;
	case '28195': //lichtschalter

	//MXC_SwitchMode(12617 /*[EG\WF\Licht]*/,!getvalue(15340 /*[EG\WF\Licht\Status]*/));
	IPS_SetScriptTimer($IPS_SELF,80);
	$v = IPS_GetScript(36355 /*[EG\Treppenhaus\Licht]*/);
	$v = $v['LastExecute'];
	$v = intval((time()-$v)); 
	if ($v<3)    // überprüfen ob letzter Tastbefehl vor max. 3s war
	if ($modus<2)
			setvalue(36394 /*[EG\Treppenhaus\Schalter\Modus]*/,$modus+1);
		else
	   {
         setvalue(36394 /*[EG\Treppenhaus\Schalter\Modus]*/,0);
         MXC_SwitchMode(34952 /*[EG\Treppenhaus\Aktor]*/,true);
        	IPS_SetScriptTimer($IPS_SELF,600);
		}
	else
		{
		setvalue(36394 /*[EG\Treppenhaus\Schalter\Modus]*/,0);
      
      IPS_SetScriptTimer($IPS_SELF,200);

		}

	break;

	}
}
if($IPS_SENDER == "TimerEvent")
{
setvalue(36394 /*[EG\Treppenhaus\Schalter\Modus]*/,0);
MXC_SwitchMode(34952 /*[EG\Treppenhaus\Aktor]*/,false);
 IPS_SetScriptTimer($IPS_SELF, 0);
}

Wenn das Script durch ne Taster oder Piri getriggert wird

if($IPS_SENDER == "Variable")

dann schalte er das Licht ein und setzt den Timer für das Script, wenn das Script durch den Timer getriggert wird

if($IPS_SENDER == "TimerEvent")

dann schaltet er das Licht wieder aus und setzt den Timer auf Null bzw. schaltet ihn aus.

Zusätzlich hab ich einmal die Variable Modus 36394 drin, die dient dazu das Licht für 10 min

IPS_SetScriptTimer($IPS_SELF,600);

einzuschalten, einfach indem ich den Taster öfters als 2 mal immer innerhalb von 3s betätige.

Getriggert wird das Script durch den Taster und die beiden PIRIs.

Hoffe das hilft schonmal, wenn nicht einfach nachfragen.

Gruß Jannis

Ich mach dann oben das Beispielscript wieder raus :smiley:

Deines ist doch passender zu Moeller, hab halt kein Moeller, dann gibt es auch kein durcheinander :wink:

Danke für die rasche und ausführliche Info.

Werde das mal bei mir einbauen!

Chris