TimerEvent läuft dauernd

<?


if($_IPS['SENDER'] == "TimerEvent")
{
    //Aus Befehl
    

    //Timer ausschalten
    IPS_SetScriptTimer($_IPS['SELF'], 0);
} else {
    //An Befehl
    

    //Timer anschalten
    IPS_SetScriptTimer($_IPS['SELF'], 60);
}

?>

Was mache ich falsch seit dem letzen update läuft das script andauernd…
also nach ca. 15 sekunden setzt es den timer von alleine auf wieder neu 60 sekunden.
Obwohl es ja quasi das Ursprungs ding aus dem wie kann ich … ist

Viele Grüße

Hi!

So wie das Skript aktuell aussieht, setzt es beim Aufruf den Timer auf 60 Sekunden, dann kommt der Timer-Aufruf, der Timer wird auf 0 gesetzt und dann wird er gleich wieder auf 60 Sekunden gesetzt…also müsste das Ding dauernd im Kreis laufen…

Poste mal alles was du da machen willst.

Hier ein Beispiel wie es aussehen könnte, wenn das Skript durch ein Ereignis (z.B. Variablenänderung) aufgerufen wird und nach 60 Sekunden wieder ausschalten soll.

<?

// hier könnte für den 1. Block noch ein IF SENDER hin - mit Variable, Execute, ... muss aber nicht, je nachdem was du machen willst

//Timer anschalten
IPS_SetScriptTimer($_IPS['SELF'], 60);
// Licht einschalten
// SetValue...



if($_IPS['SENDER'] == "TimerEvent") {
	// Licht ausschalten
	// SetValue...
	
	// Timer ausschalten
	IPS_SetScriptTimer($_IPS['SELF'], 0);
}

?>

Grüße,
Chris

Vielen Dank

Ich hatte das Beispiel aus der Hilf genommen.

Ich werd noch ein bisschen kirre

Es macht quasi immer noch was es will …
und startet den timer von „alleine…“

Es hat wohl irgendwas mit Z-Wave Gatway NodeID und HomeID zu tuen.

Nimm mal die „Logische Baumansicht“…da ist das etwas übersichtlicher :wink:

Wenn ich das Skript starte, dann sieht es erst so aus:

Und dann nach 60 Sekunden wird das Skript einmal aufgerufen und der Timer deaktiviert und dann sieht es so aus:

Wird das Skript bei dir noch durch andere Skripte/Ereignisse aufgerufen? Oder ist das Skript irgendwo als „Aktion-Skript“ bei einer Variable hinterlegt? Was sagt denn das „Meldungen“ Fenster? Von alleine startet ein Skript ja nicht…

-Chris-

Habe es einfach gelöscht und ein neues angelt welches durch die variablen änderung (bewegungsmelder) ausgelößt wird

<?
if (GetValueBoolean(50536 /*[Original\Raum\Status]*/)==true)
{
    //Timer anschalten
    IPS_SetScriptTimer($_IPS['SELF'], 20);
    // Licht einschalten
    // SetValue...
    $temp = GetValueInteger(21569 /*[Original\Benachrichtigung\Zahler]*/);
    $temp +1;
    SetValueInteger(21569,$temp);

}

if (GetValueInteger(21569 /*[Original\Benachrichtigung\Zahler]*/) == 2)
{
IPS_RunScript(26163 /*[Original\RGB\An]*/);

}

if($_IPS['SENDER'] == "TimerEvent") {
    // Licht ausschalten
    // SetValue...
     SetValueInteger(21569 /*[Original\Benachrichtigung\Zahler]*/,0);
    // Timer ausschalten
    IPS_SetScriptTimer($_IPS['SELF'], 0);
}

?>

So sieht momentan mein script aus aber es tut nicht was es toll (;

20 sekunden lang überprüfuen ob der bewegungsmelder ausgelößt ist dabei jedes mal den zähler hochzählen +1 und wenner 2 ist die LED an machen

Bitte PHP Tags benutzen.

Probiere mal das Skript hier: (wichtig, Zeile 23 für „Licht ausschalten“ noch auf dich anpassen)

<?
// wenn Bewegung erkannt wird, dann wird dieses Skript ausgeführt 
if (GetValueBoolean(50536 /*[Original\Raum\Status]*/)==true)
{
    // Zähler hochzählen
    $temp = GetValueInteger(21569 /*[Original\Benachrichtigung\Zahler]*/) + 1;
    SetValueInteger(21569,$temp);

}

// Wenn Zähler bei 2, dann LED anschalten und Timer auf 20 Sekunden stellen
if (GetValueInteger(21569 /*[Original\Benachrichtigung\Zahler]*/) == 2)
{
// LED anschalten
IPS_RunScript(26163 /*[Original\RGB\An]*/);
//Timer anschalten
IPS_SetScriptTimer($_IPS['SELF'], 20);
}


if($_IPS['SENDER'] == "TimerEvent") {
	 // Licht ausschalten
	 IPS_RunScript(12345);   // hier dein Skript für LICHT AUS!!! oder wie auch immer du das gelöst hast
    // Zähler auf 0 setzen
    SetValueInteger(21569 /*[Original\Benachrichtigung\Zahler]*/,0);
    // Timer ausschalten
    IPS_SetScriptTimer($_IPS['SELF'], 0);
}

?>

…damit wird bei jedem Skript-Start der Zähler um 1 hochgezählt. Also erster Aufruf = 1, zweiter Aufruf = 2 und dabei dann Licht an und Timer auf 20 Sekunden. Nach 20 Sekunden wird das Skript erneut aufgerufen, der Zähler springt kurz auf 3, dann wird das Licht ausgeschaltet, der Zähler wieder auf 0 gesetzt und das Timer auf 0 gesetzt/abgeschaltet.

Grüße,
Chris