Probleme mit Timer Event

Hallo

Mir ist seit ein paar Tagen aufgefallen dass das Timer Event nicht mehr richtig arbeitet.
Hier ein sehr einfaches Script.
Es wird 2 bis 3 Mal der ELSE Zweig ausgeführt bis einmal die der obere Codeteil ausgeführt wird.
D.h. der Timer verlämgert sich 3 mal um 1100 Sec. ert danach wird die Funktion $LOut->Off(); ausgeführt.
Ich verwende IPS 4.3 mit aktuellem Update.

	
        if($_IPS['SENDER'] == "TimerEvent")
	{
	    IPS_SetScriptTimer($_IPS['SELF'], 0);
	    $LOut->Off();	
	}
	else
	{
	    IPS_SetScriptTimer($_IPS['SELF'], 1100);

	}

Was löst denn die weiteren male das Skript aus? Log vielleicht mal $_IPS[‚SENDER‘].
Denn wenn der Timer läuft und das Skript von einem nicht-Timer-Sender ausgeführt wird, dann wird der Skripttimer wieder zurückgesetzt. Falls du das verhindern möchtest, müsstest du im else-Fall prüfen ob der Timer bereits läuft.

Hallo

Das Script hört auf eine Variablenänderung, das ist aber nicht der Grund
Ich habe den Timer auf 4 Secunden heruntergesetzt.
Das Script startet sich nach 4 Secunden selbst wieder, d h. der Timer wird 4 mal um 4 Sekunden vorgeschaltet. Beim 4. Mal wird dann der Code ausgeführt und der Timer beendet.

Ist der Timer auf 4 Sekunden, wird der Timer alle 4 Sekunden 4 Mal aufgerufen.
Ist der Timer auf 10 Sekunden, wird der Timer alle 10 Sekunden 4 Mal aufgerufen.

Ich habe das bei mir selber auch einmal mit einem kleinen Zeitintervall ausprobiert und bei mir klappt es einwandfrei. Das ist mein Testskript, inklusive Logging im Message Log:

<?

	IPS_LogMessage("SwitchTest", $_IPS['SENDER']);
    if($_IPS['SENDER'] == "TimerEvent") 
    { 
        IPS_SetScriptTimer($_IPS['SELF'], 0);
        IPS_LogMessage("SwitchTest", "Switch off");
    } 
    else 
    { 
        IPS_SetScriptTimer($_IPS['SELF'], 5);
        IPS_LogMessage("SwitchTest", "Switch on");
    }  


?>

Führ das mal bei dir aus und probiere, ob es funktioniert oder zumindest hilfreiche Ausgaben produziert. Ansonsten könntest du das Logging ja mal in dein Skript mit übernehmen und schauen, was bei deinem Skript möglicherweise anders läuft.

Hallo

Möchte mich hiermit für die Hilfe bedanken.
Habe gestern den Fehler noch gefunden.
Wird das Script manuell aufgerufen passt alles.
Das Script reagiert aber auf Variablenänderung, genauer wenn sich eine schaltbare Steckdose einschaltet.
Das Problem liegt hier bei der Steckdose, State = True wird hier mehrfach übergeben. Ein Timer Event läuft, und die restlichen Aufrufe stellen sich hinten an und warten bis der erste Timer fertig ist.

Habe gestern wie von Euch empfohlen einen Prüfung eingebaut das beim Aufruf geprüft wird, ob schon ein TimerEvent existiert.

Jetzt funktioniert es einwandfrei.

Danke LG Markus

Hast du wirklich Variablenänderung und nicht aktualisieren im Ereignis ausgewählt?
Michael

Ganz sicher Variablenänderung.

Dein Skriptausschnitt sieht weiterhin korrekt aus. Selbst wenn deine Variable dreimal auslöst, dann würde der Timer nur einmal ab der letzten Auslösung durchlaufen.

Gibt es noch mehr in deinem Skript oder ist das nur der dargestellte Ausschnitt? Wie genau sieht dein Ereignis aus und was kann alles die Variable ändern? Bist du sicher, dass die Auslösung durch dreimal TRUE passiert und nicht TRUE, FALSE, TRUE? Das kannst du ja mal über Ausgabe von $_IPS[‚VALUE‘] prüfen, wenn $_IPS[‚SENDER‘] „Variable“ ist.

Bisher fehlen uns leider noch ein paar Informationen um den Ursprung zu entdecken.