ich stehe wieder mal so richtig am Schlauch oder es ist ein BUG:
Ich möchte einen bestehenden TimerEvent verändern. Der Timer wird nicht gestoppt, sondern es soll einfach ein neuer Zykluswert eingetragen werden. Dadurch sollte der Timer hoffentlich auch neu aufgezogen werden?! Realisiert habe ich es mit IPS_SetEventCyclic. Nur es funkt nicht :mad:.
Egal was ich mache, der Timer verhält sich sehr merkwürdig. Kann es sein, dass ein laufender Timer nicht astrein neu gesetzt werden kann?
Hier ein kleines Testskript, welches einfach nur bei jedem Timeraufruf den Timerwert um 10s verlängert und die aktuellen Timerwerte ins Log schreibt.
Danke das Du hier nachfragst. Ich habe auch gerade ein Script geschrieben mit Timer und setze auch die Zeiten jeweils neu und ich finde der Timer verhält sich genauso wie bei dir. Ich will bei einem Licht Türgetriggert einfach nur eine Minute nachleuchten. Mal geht das Licht aber schon nach 10 Sek aus, als ob der Timer nicht neu gesetzt wird.
Habe gerade festgestellt, dass wenn ich mit IPS_SetScriptTimer() arbeite, funktioniert es. Mit IPS_SetEventCyclic macht es Probleme. Nur mit IPS_SetScriptTimer() kann ich halt nur auf einen Event/Skript zugreifen! Hoffe, paresy oder ein anderer „Guru“ hat eine Idee dazu was da faul ist!
[ul]
[li]setzt den neuen Wert
[/li][li]zieht den Timer sofort auch auf diesen Wert auf
[/li][/ul]
IPS_SetEventCyclic()
[ul]
[li]setzt auch den neuen Wert
[/li][li]Aber der aktuelle Timerstand wird auf einen nicht nachvollziehbaren Wert gesetzt.
[/li][li]Läuft der Timer dann ab, wird er aber mit dem richtigen Wert neu aufgezogen.
[/li][li]Ist der alte Wert gleich dem neu gesetzten, wird die Aktion scheinbar intern verworfen.
[/li][/ul]
–> Es ist scheinbar nicht möglich, mit IPS_SetEventCyclic() den Timer neu aufzuziehen.
–> Leider kann bei Skripten mit mehr als einem Timer nicht mit IPS_SetScriptTimer() ein Workaround realisiert werden.
Ein Deaktivieren / Aktivieren mit IPS_SetEventActive() brachte auch keinen Erfolg.
@paresy: Kannst du bitte kurz mal schreiben, ob ich das so richtig wiedergegeben habe und ob das so gewünscht ist oder ein Fehler vorliegt.
Ja, schon. Ich liebe auch den Scripttimer! Aber wenn ich IPS_SetScriptTimer() verwende, kann ich nicht angeben, welchen Timer er nehmen soll. Ich habe einige Scripte mit mehr als einem Timer darunter.
Ich habe 1 Script und darunter 2 Timer. Baim Aufruf von IPS_SetScriptTimer() gebe ich ja die ID des Scriptes an und nicht die des Timer! Wie spreche ich dann meinen zweiten Timer an (wenn der erste der Scripttimer ist).
Rainer, ich denke wir schreiben aneinander vorbei! Ich kann den Befehl IPS_SetEventCyclic(…) nicht verwenden, weil er (meiner bescheidenen Meinung nach) nicht richtig funktioniert!
Wird auch ein bereits gestarteter,laufender Timer auf den neuen Wert hochgezogen. Ich meine nicht erst beim nächsten Event, sondern er beginnt sofort vom neuen Wert herunterzuzählen?
Beispiel:
13
12
11
10
9 --> Timer wird neu gesetzt auf 50
50
49
48
…
Bei mir sieht es so aus:
13
12
11
10
9 --> Timer wird neu gesetzt auf 50
31
30
29
…
Habe ich ausprobiert. Ja, es wird auch übernommen. Und auch schön bei den Scriptereignissen der neue Wert angezeigt. Aber der neue Wert wird trotzdem erst nach Ablauf der aktuellen Periode als neuer Sollwert übernommen. Sieh dir mal $EreignisInfo[‚NextRun‘] an.
Ich habe dein Script um 3 Zeilen erweitert. Dort siehst du bei der Ausgabe dann, in wie viel Sekunden das Script das nächste mal gestartet wird. Sollte iegentlich immer der oben geschriebene Wert sein. Ist es aber nicht.
ich lese und bastel hier mal mit, habe aber auch keine lösung.
kann rubberduck nur zustimmen, das timer neu aufziehen mit IPS_SetEventCyclic funktioniert nicht.
habe dazu auch probiert den timer vorher zu deaktivieren, aktivieren usw. es kommen einfach irgendwelche zeiten bei mir raus. es sieht so aus als ob der timer ablaufen muss nur dann hat man nochmal seine zeit.
Puhhh - zumindest weiß ich jetzt, dass ich nicht zu blöd bin:) Soll ich das jetzt zusammenfassen und als Fehlermeldung einbringen oder reicht dieser Thread aus?