Variable nach 10 Minuten ausschalten

Hallo,

das Thema wurde hier in verschiedener Form im Forum schon abgehandelt, aber eher mit komplexen Lösungen. Ich such eine simple Lösung, um eine Variable z. B. „Licht“ manuell einzuschalten und nach z. B. 10 Minuten automatisch wieder auszuschalten. So richtig komme ich nicht weiter. Hat jemand einen einfachen PHP-Code dazu?

Danke & Grüße

Ecoli

Schau hier mal: Wie kann ich…? — IP-Symcon :: Automatisierungssoftware

An Befehl brauchst du ja nicht, nur den Timer setzen auf 600 Sekunden. Und bei Aus Befehl mit SetValue die Variable setzen.
Dann ein Ereignis bei Variable gleich bestimmter Wert (An) auf das Script.
Michael

Moin…

… das Zauberwort heißt „ScriptTimer“.
Schau mal in die Doku.

Gruß,
Peter

Hallo Michael.

den Link habe ich gesehen, kämpfe aber etwas mit der Syntax. „An“ brauche ich, wie du schon sagst, nicht. Im Beispiel der Doku stehen die 60 Sekunden beim „An“-Befehl. Wo müssen die 600 Sekunden für meine 10 Minuten dann hin?

Gruß

Ecoli

Genau da wo die 60 stehen.
Bei Timer anschalten.
Michael


if($_IPS['SENDER'] == "TimerEvent") // prüft ob das Script vom TimerEvent gestartet wird. Wenn Du das Script von Hand oder vom WF startetst wird nicht ausgeschaltet.
{
    //Aus Befehl
    
 
    //Timer ausschalten
    IPS_SetScriptTimer($_IPS['SELF'], 0); // hier wird der Timer ausgeschaltet. Wenn Dein Licht aus ist brauchst Du keinen Timer mehr.

} else // wenn das Script von Hand, vom WF oder einem anderen Script gestartet wird, wird (ohne anschalten), nur der Timer gesetzt der das Licht wieder ausschaltet.
{
    //Timer anschalten
    IPS_SetScriptTimer($_IPS['SELF'], 60); // hier wird der Timer eingeschaltet. Für 10 Minuten müsstest Du die 60 in 600 ändern.
}

Hallo,

sorry wenn ich am Feiertag nerve, aber ich stehe komplett auf dem Schlauch. Ich will die Bool-Variable 29802 schalten. Das Skript wird durch Änderung einer anderen Variablen ausgelöst. Die Variable 29802 soll von „aus“ für 10 Sekunden auf „an“ geschaltet werden und dann wieder „automatisch“ auf „aus“. Mein Skript sieht so aus:

if($_IPS['SENDER'] == "TimerEvent")
{
    //Aus Befehl
    SetValueBoolean (29802, FALSE);

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

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

Muss ich für ‚SENDER‘ etwas einsetzen? Wahrscheinlich mache ich einen grundsätzlich Denkfehler.

Gruß

Ecoli

… die Antwort von Wolfgang hat sich jetzt mit meiner überschnitten. Ich gehe nochmal in mich…

Sender ist so korrekt, das ist der Ausschalt Teil.
Sollte so gehen.
Hast du das Ereignis angelegt welches durch xyz dieses Script startet ?
Wo genau ist das Problem ?
Sonst mach Screenshots von dem Ereignis, dem TeilBaum etc…
Ohne weitere Infos was dein Problem ist, raten wir jetzt.
Michael

Dein Scritpt ist genau richtig. Schaltet halt nach 10 Sekunden aus.
Das Script musst Du jetzt nur noch als ActionScript bei der Variable 29802 hinterlegen.

Das möchte er nicht.
Er hat geschrieben dass eine andere Variable die Bool steuern soll.
Michael

So, hier ein Screenshot:

Die Variable „starter“ startet „Testskript“ bei Varaiblenänderung (habe ich auch mit Variablenaktualisierung probiert). „Testskript“ ist das vorhin gepostete Skript. Die „Testvariable“ (29802) soll dann 10 Sekunden auf TRUE gehen und danach wieder auf FALSE. Die Variable reagiert nicht, auch wenn sie vorher manuell auf FALSE gesetzt wird.

Sicher ein grundsätzlicher (Denk-) Fehler meinserseits.

Gruß

Ecoli

Also ich seh in Deinem Screenshot keinen Scripttimer.

Führ das Testscript ein mal von Hand aus. Dann müsste es den Timer automatisch anlegen. (Mit deinem geposteten Script).

Habs bei mir genau so nachgebaut, ohne Actioscript. Bei mir funktionierts.

Hallo Wolfgang,

ich habe jetzt (hoffentlich richtig, sieht aber aus wie bei dir) einen Scrtipttimer angelegt:

Skripttimer:

Skripttimer.jpg

Mein Skript sieht so aus:

if($_IPS['SENDER'] == "TimerEvent")
{
    //Aus Befehl
    SetValueBoolean (29802, false);

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

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

Auslösende Ereignis ist:

Ereignis_1.jpg

Ereignis_2.jpg

Meine Erwartung: bei Änderung der Variablen „starter“ wird die „Testvariable“ für 5 Sekunden ein- und dann wieder ausgeschaltet. das passiert bei mir aber nicht. Entweder mache ich noch einen grundsätzlichen Fehler oder es liegt an einem Detail…

Gruß

Ecoli

Wie änderst Du denn die Starter?

Und Du hast in Deinem Script am Anfang noch <? und am Ende ?>

Hallo Wolfgang,

Und Du hast in Deinem Script am Anfang noch <? und am Ende ?>

…peinlich, das war’s. Habe ich glatt übersehen, beim Copy & Paste einfach überschreiben. Manchmal sieht man vor lauter Bäumen den Wald nicht… Ich hab’s fast geahnt, dass es so ein Fehler ist, aber wenn man sich verrannt hat, übersieht man oft die Basics. :o

Wie änderst Du denn die Starter?

Testweise klappt es, einfach manuell „true“ oder „false“ anzuklicken.

Vielen Dank für die Hilfe! Jetzt habe ich wieder etwas gelernt, den Code kann man immer gut gebrauchen, wenn etwas automatisch nach einer definierten Schaltzeit wieder in den Ursprungszustand zurückgehen soll.

Viele Grüße

Ecoli