Timer Script

Hallo,
ich habe eine Problem mit meinem Timer Script.
Ich bekomme es einfach nicht zum laufen . Wenn ich das Script von Hand starte funktionier es , wenn ich aber es über ein zyklisches Ereignis starte wird das Schript gestartet aber die Steckdose wird nicht eingeschaltet.
Vielleicht hat jemand ein Rat.

if($IPS_SENDER == „TimerEvent“)
{

MXC_SwitchMode(43662 /[Teich\sauerstoff Steckdose]/,false);

//Timer ausschalten
IPS_SetScriptTimer($IPS_SELF, 0);
} else {

MXC_SwitchMode(43662 /[Teich\sauerstoff Steckdose]/,true);

//Timer anschalten
IPS_SetScriptTimer($IPS_SELF, 3*60);
}

Hallo…
du schreibst hier ja:
Wenn $IPS_SENDER == „TimerEvent“ dann soll er ausschalten … oder?

Hallo,
die Steckdose soll bei Script start für 3 Minuten einschalten.

Gruß Chriatian

Der ScriptTimer und das zyklische Ergeigniss kommen beide als „TimerEvent“, wenn ich das richtig in Erinnerung habe. Das meintest Du Christian S?

Wenn ja, dann müsste man über:

 IPS_GetObject($IPS_EVENT); 

die Quelle des Events auswerten und unterscheiden.


MXC_SwitchMode(43662 /*[Teich\sauerstoff Steckdose]*/,true);
IPS_SetScriptTimer($IPS_SELF, 3*60);

if($IPS_SENDER == "TimerEvent") {

  MXC_SwitchMode(43662 /*[Teich\sauerstoff Steckdose]*/,false);
  IPS_SetScriptTimer($IPS_SELF, 0);
} 

:slight_smile:

Hallo,
zuerst einmal danke für die Hilfe
die Steckdose schaltet jetzt ein geht aber gleich wieder aus.
Gruß Christian

Um dies zu vermeiden müsstest Du vermutich die Herkunft der Timer Events unterscheiden…
http://www.ip-symcon.de/forum/f52/timer-script-14707/#post125806
… dann sollte dies nicht mehr so sein.

sorry, aber wie mach ich das ich steh gerade auf dem Schlauch.

Schaue mal, ob im Skript unterschiede bei dem folgenden Code angezeigt werden


$eobj=IPS_GetObject($IPS_EVENT);
print_r($eobj);

Wenn es doch zwei Events sind, die das Script triggern, kann man mit der Systemvariable „$IPS_EVENT“ das Event unterscheiden.

Hallo,
bin jetzt leider 2 Tage unterwegs, ich werde es am Freitag ausbrobieren und dann berichten . Besten Dank
Gruß Christian

Hallo,
habe das Script mal umprogrammiert und so funktioniert es auch.
Es muß so wie du geschrieben hast am timer liegen.
Gruß Christian

$step = GetValueInteger(„Time_step1“);

Switch ($step)
{
case 1:
IPS_SetScriptTimer($IPS_SELF,360);
SetValueInteger(„Time_step1“,$step + 1);
MXC_SwitchMode(43662 /
[Teich\sauerstoff Steckdose]*/,true);
break;
case 2:

  MXC_SwitchMode(43662 /*[Teich\sauerstoff Steckdose]*/,false);
  IPS_SetScriptTimer($IPS_SELF,0);
 SetValueInteger("Time_step1", 1);

break;

@christian p …ohne den Vorhang genauer gelesen zu haben, scheint es mir so, dass vielen so geht… du bist seit 2 Jahren an diesen Board angemeldet, wenn auch mit wenigen Beiträgen, und schreibst deinen Scriptschnitzel hier nach wie vor als normalen Text oder als Zitat, was kaum jemand nachvollziehen möchte… binde dein Script besser in PHP-Tags ein… wahrscheinlich wäre der thread weniger lang, die Leute die dir gerne weiter helfen möchten, würden sich einfacher tun und du wär’st schneller befriedigt.

Habs mal PHP-tagged (letzter Button in der Zeile über’n Text)…

$step = GetValueInteger("Time_step1");

  Switch ($step)
{
	 case 1:
                 IPS_SetScriptTimer($IPS_SELF,3*60);
                 SetValueInteger("Time_step1",$step + 1);
               MXC_SwitchMode(43662 /*[Teich\sauerstoff Steckdose]*/,true);
break;
	 case 2:

	  MXC_SwitchMode(43662 /*[Teich\sauerstoff Steckdose]*/,false);
	  IPS_SetScriptTimer($IPS_SELF,0);
     SetValueInteger("Time_step1", 1); 

php.JPG

Hallo nancilla,
werde es in Zukunft so machen

 $step = GetValueInteger("Time_step1");

  Switch ($step)
{
	 case 1:
    IPS_SetScriptTimer($IPS_SELF,3*60);
    SetValueInteger("Time_step1",$step + 1);
    MXC_SwitchMode(43662 /*[Teich\sauerstoff Steckdose]*/,true);
break;
	 case 2:

	  MXC_SwitchMode(43662 /*[Teich\sauerstoff Steckdose]*/,false);
	  IPS_SetScriptTimer($IPS_SELF,0);
     SetValueInteger("Time_step1", 1);
	  
break;
}