NEWS
(Gelöst) Delay/Wait zum Triggern einer Meldung
-
Hallo erneut,
habe mal wieder ein Problem mit der Logik somit auch mit Blockly.
Folgende Situation:
Ich möchte unser Garagentor überwachen. Derzeit läuft ein Skript, das jede Statusänderung per Telegram meldet. Das führt zu Tonnen von Meldungen pro Tag (Tor auf/zu/auf/zu....)
Interessant ist allerdings nur der Fall, wenn das Garagentor im offenen Zustand vergessen wurde. Dh, wenn das Tor zB >5 Minuten offen steht. Erst dann soll eine Telegram Meldung raus [OFFEN], und auch nur dann eine Folge-Meldung, dass/wenn das Tor wieder [ZU] ist. Innerhalb der ersten 5 Minuten soll das Tor auf/zu fahren, wie es will, ohne Telegram Meldung!
Alle meine Versuche mit Trigger (wurde geändert/aktualisiert/wahr/unwahr) mit Timeout (5min.) und aktualisiere/schalte System mit (Zeichenkette/Logikwert) schlugen fehl. Die Variable wechselte ihre Werte, aber nicht, wie ich wollte.Wie könnte ein Blockly Skript für die Verzögerung aussehen?
Ist der Ansatz über eine -verzögert gesteuerte- Variable überhaupt sinnvoll?Und dabei ist die WENN--> DANN Verknüpfung (Garagentor > 5min AUF [telegram: OFFEN] dannach Garagentor ZU [telegram: ZU]) noch nicht einmal im Ansatz angedacht.
Auch dafür wäre ich für eine Anregung dankbar.Vielen Dank schon einmal und ein schönes Wochenende,
Martin -
@mjohn sagte:
wenn das Tor zB >5 Minuten offen steht. Erst dann soll eine Telegram Meldung raus [OFFEN], und auch nur dann eine Folge-Meldung, dass/wenn das Tor wieder [ZU] ist.
Vorschlag (Wert ist eine Eigenschaft des Triggerdatenpunktes):
-
Hallo paul53,
danke zunächst für die schnelle Antwort.Sind [setze 'Timeout'] und ['Timeout'] selbst definierte Variablen? Wenn JA, wie und wo definiere ich diese generell.
Im Beitrag "Blockly variable Timeout Steuerung" wurde von ihnen eine ähnliche Option [xx'TimeoutMqttResp'] genutzt, wie wird diese generiert?
Ich denke, mir fehlen sehr viele Basics. Aber ich arbeite dran...Ich habe das Problem vorläufig folgendermassen gelöst.
Jedoch mit dem Nachteil, dass sowohl [AUF] als auch [ZU] mit 5 Min. Verzögerung in der Variable geschrieben, und damit per telegram gesendet werden. Aber ansonsten funktioniert es nach Stunden gem. trial&error Prinzip.Grüße und Danke,
Martin -
@mjohn sagte:
Sind [setze 'Timeout'] und ['Timeout'] selbst definierte Variablen?
Nein, setze timeout ist ein Block unter Timeouts. timeout ist die der Funktion setze timeout per Voreinstellung zugewiesene Variable. Um auf diese außerhalb der Timeout-Blöcke zugreifen zu können, muss man erst eine beliebige Variable erstellen und kann anschließend die Variable timeout selektieren.
-
Jetzt habe ich das Ganze zusammengebracht. Weis zwar nicht genau, wie die Logik funktioniert, jedoch es sieht so aus ...
Kleines Problem, der Code läuft nicht.
18:14:49.566 error javascript.0 script.js.common.Garage_Telegram compile failed: at script.js.common.Garage_Telegram:25Das überfordert mich doch massiv. Bin aber lernwillig
Danke und schönen Abend.
-
@mjohn falls nicht timeout muss in den sonst-Zweig von falls Wert. stop timeout muss unter die falls-Klammer, nicht innerhalb.
Im Skript gibt es noch:
setze timer auf 0
stop (schedule)Die solltest Du löschen.
-
Vielen Dank für die Unterstützung.
Hat letzendlich geklappt. Grund war, einmal der fehlerhafte falls-sonst-Zweig und dann, dass ich noch 'left-over-Befehle' (nicht sichtbare Blockly Kommandos) auf dem screen hatte. Leider durch den Zoom verdeckt.
Funktioniert jetzt.
Vielen Dank erneut.
Martin