NEWS
Mehrfaches Triggern/ Endlosschleife vermeiden
-
Hallo zusammen,
ich versuche gerade meinen Sonnenschutz/ Beschattung vernünftig einzustellen.
Um zu vermeiden, dass mehrere Timeouts gestartet werden, frage ich ab, ob der vorheriger Wert geringer als x ist.
Mein Problem ist allerdings, dass wirklich sonnigen Tagen dieses Ereignis nur einmal recht früh eintritt und im späteren Verlauf des Tages nicht mehr.
Aber die Voraussetzung fürs Auslösen ist nur später am Tag (Azimut der Sonne) gegeben.
Muss ich hier prinzipiell auf beides triggern oder mit Variablen arbeiten?@paul53 Hast du hier evtl. einen Vorschlag oder eine Idee?
Lieben Dank vorab!
-
@lessthanmore sagte: Ereignis nur einmal recht früh eintritt und im späteren Verlauf des Tages nicht mehr.
Verwende anstelle des Vergleiches mit "vorheriger Wert" die Prüfung der Timer-Variablen.
EDIT: Rücksetzen der Timer-Variable auf null entfernt.
-
@paul53 Vielen lieben Dank.
Ist es so korrekt?
-
@lessthanmore sagte: Ist es so korrekt?
Nicht ganz: "setzte timeout3 auf null" muss in den Callback von timeout3.
Ein "stop timeout" ist zu viel: Entweder bei Unterschreitung des unteren Grenzwertes oder bei Unterschreitung des oberen Grenzwertes (sonst-Zweig).Die 3 Variablen gibt es jeweils nur einmal in der ersten Zeile der Javascript-Ansicht?
-
@paul53 Gutes Auge.
Ja, sind nur einmal definiert:
-
@paul53 said in Mehrfaches Triggern/ Endlosschleife vermeiden:
Ein "stop timeout" ist zu viel: Entweder bei Unterschreitung des unteren Grenzwertes oder bei Unterschreitung des oberen Grenzwertes (sonst-Zweig).
Was wenn der Wert dazwischen liegt?
In diesem Fall zwischen 35000 und 26250. Der Timeout muss ja beide Male unterbrochen werden. -
@lessthanmore sagte: Der Timeout muss ja beide Male unterbrochen werden.
Nicht erst bei Unterschreitung des unteren Grenzwertes (26250)?
timeout2 und timeout3 werden erst wieder bei Überschreiten des oberen Grenzwertes gestoppt. -
@paul53 Hast Recht, timeout2 und müssen ebenfalls noch im sonst-Zweig gestoppt werden.
Erst wenn der obere Grenzwert überschritten wird sollen die Rollläden nach einem timeout fahren. Wird innerhalb dieser Zeit der Wert einmal unterschritten, so soll der Timer von vorne beginnen.Sind die Rollos unten und es ist dauerhaft zu dunkel, sollen sie teilweise hochfahren, etc.
Besten Dank!
-
@lessthanmore sagte: ebenfalls noch im sonst-Zweig gestoppt werden.
Dann lasse alle 3 "setze timeoutX auf null" weg, denn das erledigen die Stopps.