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
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);
}
?>
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…
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.