Timer beendet sich zufällig vor Ablauf der definierten Zeit

Hallo zusammen,

ich habe nun reproduzierbar, jedoch keinem Muster folgenden, festgestellt, dass unterschiedliche Timer sich nicht an die angegeben Laufzeit halten.

Ich steuere ein Velux Fenster (via Shelly) mittels Timer. Da die Fahrzeit des Fensters ca. 40 Sekunden ist, muss ich hier mit einem Timer arbeiten und habe in unregelmäßigen Abständen den Fall, dass das Fenster nicht ganz auf fährt.

Ich habe daraufhin einen kleinen Versuchsaufbau, ohne Aktoren gemacht und konnte das Verhalten reproduzieren.

Ich habe den Timer via GUI angelegt und schalte ihn via PHP an oder so aus. Eigentlich nichts wildes.
Mache ich was falsch oder ist das ein Bug?

LG
Lukas

kannst du mal das zugehörigre Skript posten ?!

Es gibt doch gar keine Timer in der GUI?
Nur zyklische Ereignisse. Und die haben keine relative Laufzeit, sondern richten sich nach ihrem Zyklus, welcher abhängig vom eingestellten Startzeitpunkt ist.
Wenn du eh per PHP schon das Ereignis schaltest, warum nutzt du nicht den Scripttimer?
… ein Gerät einschalten und nach 60 Sekunden wieder aussschalten
Michael

Besagter Testaufbau.:

Script #1:

<?php
  SetValueBoolean(27627, true);
  IPS_SetEventActive(20233, true);
?>

Script #2:

<?php
  if( $_IPS['EVENT'] )
    {
        if( $_IPS['EVENT'] == "20233" )
            {
                SetValueBoolean(27627, false);
                IPS_SetEventActive(20233, false);
            }
    }
?>

Mit Timer in der GUI ist ein Event gemeint.

Und wie ist das zyklische Ereignis eingestellt?
Du setzt ja die Startzeit nicht neu und somit wird das nicht wie gewünscht funktionieren.
Vereinfachtes Beispiel: Startzeit ist 00:00 und es ist interval 30 Sekunden eingestellt. Das Ereignis löst dann immer um xx:30 und xx:00 aus.
Wird das Ereignis um xx:10 aktiviert, dann löst es dennoch um xx:30 aus, weil das sein nächster Intervall gerechnet von der Startzeit wäre. Und nicht wie erwartet um xx:40.

Michael

Ok. Danke, habe es verstanden.

Dann ist der richtige Weg über den Script Timer um mein Ziel zu erreichen?

Zumindest ist es einfacher.
Oder halt die Startzeit des Ereignis mit setzen auf die aktuelle Zeit.
Michael

1 „Gefällt mir“

Noch eine letzte Frage.
Wie bekomme ich die ID des Script Timers heraus? Das Skript welches aufgerufen wird, beinhaltet noch jede Menge andere Inhalte und bisher filtere ich immer auf das auslösende Ereignis.

EDIT: Ja ok. Erst testen, dann schreiben. Er legt dann einen Timer in der GUI an. THX!

Der Scripttimer bezieht sich immer auf das Script welches ihn setzt.
Übergreifend damit zu arbeite sollte man vermeiden.
Schau dir das Beispiel oben aus der Doku an.
Die ID brauchst du nicht.
Im Zweifelsfall ein eigenes Script dafür nutzen und, je nach Anwendung wird es halt als Aktionsskript durch RequestAction oder halt mit IPS_RunScript gestartet.
Michael