NEWS
Blockly nur einmal ausführen
-
Hi,
ich über wache ein geofence das sich natürlich ständig ändert.
Jetzt möchte ich, dass mein Blockly, das in diesem Fall einen Alarm auslöst, nur einmal ausgeführt wird.Wie stelle ich das denn am besten an?
-
Indem man beim ersten Durchlauf eine Variable auf True setzt. Deinen Falls-Baustein ergänzt du durch einen weiteren Und-Baustein (Nicht Variable). Dann musst du nur noch entscheiden, durch was du die Variable wieder auf False setzt.
-
@ofbeqnpolkkl6mby5e13
Ja, das habe ich verstanden aber wie schalte ich sie wieder ein. Das muss ich dann von "Hand" machen? -
@totocotonio
schwierig zu sagen ohne zu wissen was du da genau machen möchtest und welche werte du denn im Iobroker hast-
wann soll es denn wieder "scharf "geschaltet sein?
gibt es eine Bedingung die du im Iobroker hast ; dann die variable wieder auf falsch setzen? -
@ofbeqnpolkkl6mby5e13 said in Blockly nur einmal ausführen:
Indem man beim ersten Durchlauf eine Variable auf True setzt. Deinen Falls-Baustein ergänzt du durch einen weiteren Und-Baustein (Nicht Variable). Dann musst du nur noch entscheiden, durch was du die Variable wieder auf False setzt.
Ich habe das selbe Problem, deshalb hänge ich mich hier mal ran....
Mein Blockly sieht so aus:
Bei jedem Aufruf werden 4 http-Aufrufe abgesetzt (und kommen auch beim Server an...):
2024-06-17 17:37:42.785 - info: javascript.0 (4379) script.js.common.Zisterne.füllstand: http://m...n.de/zisterne/data.php?hoehe=191&temperature_v=24.98&humidity_v=46.86&pressure_v=1008.56 2024-06-17 17:37:42.918 - info: javascript.0 (4379) script.js.common.Zisterne.füllstand: http://m...n.de/zisterne/data.php?hoehe=191&temperature_v=24.98&humidity_v=46.86&pressure_v=1008.56 2024-06-17 17:37:42.924 - info: javascript.0 (4379) script.js.common.Zisterne.füllstand: http://m...n.de/zisterne/data.php?hoehe=191&temperature_v=24.98&humidity_v=46.86&pressure_v=1008.56 2024-06-17 17:37:42.924 - info: javascript.0 (4379) script.js.common.Zisterne.füllstand: http://m...n.de/zisterne/data.php?hoehe=191&temperature_v=24.98&humidity_v=46.86&pressure_v=1008.56
Einer wäre doch genug!
Ich habe die Variable "ausgelöst" eingeführt - die wird nach der 1. Ausführung auf 'true' gesetzt und sollte die mehrmalige Ausführung verhindern - Klappt aber so nicht.
Es scheint mir, dass für jedes Objekt im "falls Objekte"-Teil eine Meldung ausgegeben wird. Ist das so?
Was mach ich falsch?
Vielen Dank für eure Mühe!!! -
@andreas-9 Ändern sich den immer alle vier Datenpunkte im Gleichtakt?
"ausgelöst" wird ja VOR dem Ausführen der Falls Abfrage IMMER auf false gesetzt, KANN da gar nicht true sein...
Da die vier Trigger anscheinend innerhalb eines Fensters von deutlich weniger, als 1 Sekunde kommen, könntest Du das Setzen auf "false" mit Verzögerung hinten anhängen ... hier zusammengeklöppelt nur die Logik
SOFORT nach der "falls" Abfrage auf wahr setzen!
-
@andreas-9 sagte: Einer wäre doch genug!
Damit zeitlich zusammenhängende Werte gesendet werden, mache es besser so:
Alternativ kann man auch testen, welcher Datenpunkt im Abfragezyklus bzw. Telegramm zuletzt aktualisiert wird, und nur auf diesen Datenpunkt triggern.
EDIT: Test:
-
@paul53 said in Blockly nur einmal ausführen:
Damit zeitlich zusammenhängende Werte gesendet werden, mache es besser so:
Super! Das funktioniert. Vielen Dank!!! Die Variable "ausgelöst" hab ich gelöscht.
Eine Frage noch: Im HTTP (GET) Block gibt es auch ein Timeout. Wofür ist das gedacht? -
@andreas-9 sagte: Im HTTP (GET) Block gibt es auch ein Timeout. Wofür ist das gedacht?
Das ist die Zeit, die maximal auf eine Antwort gewartet wird, bis mit einer Fehlermeldung abgebrochen wird.
-
@paul53 said in Blockly nur einmal ausführen:
Das ist die Zeit, die maximal auf eine Antwort gewartet wird, bis mit einer Fehlermeldung abgebrochen wird.
Vielen Dank!!!!