Baxxy hat geschrieben: ↑10.03.2023, 11:26
Der CUxD Timer erzeugt während seiner Laufzeit keine Events (nur bei Start/Stop), somit hat die ReGa keine Kenntnis über den aktuellen Timer-Stand.
[...]
Kann aber auch nicht passen, denn wenn der Startwert in der ReGa verfügbar wäre, müsste die Prüfung auf < Startwert (während der Timer läuft) immer Wahr ergeben.
Ja doch, das würde schon Sinn machen. Zum einen würde <Startwert schon Falsch ergeben, nur <=Startwert wäre Wahr. Außerdem prüfe ich auf <Startwert-5 (SET 120, GET <115), weil ich wissen will, ob die Lichtschranke mindestens 5 Sekunden blockiert war.
Baxxy hat geschrieben: ↑10.03.2023, 11:26
Im Script verwendest du ja .State().
Stimmt, das war mir gar nicht wirklich bewusst, eigentlich reine Gewohnheit bei CUxD State() zu verwenden, weil CUxD keinen duty cycle verursacht. Bidcos und HmIP frage ich immer mit Value() ab. Ich probiere nachher mal den Unterschied von Value() und State() während der Laufzeit des Timers.
OK, dann wird es wohl in diesem Fall darauf raus laufen, die Prüfung weiterhin im Skript zu machen. Ansonsten müsste ein zweiter Timer her, Timer1 5s und Timer2 120s, und im Programm dann prüfen, ob Timer1 =0 und Timer2 >0. Wird mir zu unübersichtlich.
Ich habe noch einen zweiten Fall, wo ich den aktuellen Wert des Timers brauchen würde. Skript scheidet da aus, weil ich abhängig vom Stand des Timers in den nächsten Sonst Wenn... rutschen will. Da muss ich mir dann was anderes einfallen lassen, oder das komplette Programm inkl. aller Zweige zu einem großen Skript umbauen.
Das ganze bringt mich aber gerade auf eine Idee, wie man bei HM Rollladenaktoren abfragen könnte, ob sie gerade fahren. So einen Anwendungsfall hätte ich nämlich. Erst Value() holen, dann State(), und wenn die unterschiedlich sind, hat der Aktor das Erreichen der Zielposition noch nicht gemeldet.