NEWS
Wartezeit einfügen ?
-
Hallo,
hatte schon im Discord Channel mal nachgehakt aber ich poste es hier auch noch einmal.Szenario:
1x Bewegungsmelder sowie zwei Magnetventile, die angesteuert werden müssen.Prinzipiell soll der Ablauf so sein, dass wenn Bewegung erkannt wird, dass zuerst das Magnetventil 1 für 3 Sek öffnet und das Magnetventil 2 nach 4 Sekunden für 3 Sekunden öffnet.
Dies funktioniert auch bereits eigentlich ganz gut.Allerdings möchte ich nun einen Timer haben, dass wenn Magnetventil 2 geschlossen wurde eine Zeit abläuft, so dass innerhalb dieses Counters nicht wieder die Sequenz aufgerufen wird. Also zB erst nach 20 Sekunden wieder bei Bewegung erkannt die Magnetventile öffnen. Vorher aber nicht. Bin für jeden Tipp dankbar.
Mein Hirn ist für Blockeis einfach nicht gemacht.
Anbei das bisherige Blockly:
-
@segway
noch ne variable "Sperrzeit" mit stop und Timeout block. setzen bei magnetventil 2 dann im timeout block 20sek später zurück nehmen.
Dann muss das nur noch als abfrage oben mit rein. ist sperrzeit falsch.Edith: dein Timeout sollte auch nen Stopp block davor haben, immer damit nicht unzählige Timeouts gestartet werden können...
-
@adnim
Puh, das überfordert meine Kenntnisse und Verständnis aber ich versuch mal was zu "basteln". -
@adnim
Ne keine Ahnung, wie ich das machen muss. Kann ich nicht die variable timeout3 dafür nehmen ? -
@adnim
so gehts leider nicht
-
@segway ok, dann setzen wir das Gespräch eben hier fort, ich bin halt nicht 24/7 im Discord.
Ich würde folgenden Aufbau vorschlagen (kann aber natürlich nicht selbst testen, da andere Hardware):
Die Datenpunkte von Dir sind natürlich noch anzupassen auf Deine.
Noch ein Nachtrag: "Duration" wird nur einmalig gesetzt auf die gewünschte Verzögerung in ms, Du könntest natürlich statt dessen auch direkt unten in den Timeout 20 schreiben und die Einheit auf "Sek" setzen.
-
@segway das könnte funktionieren
-
-
@segway Ja, sollte soweit klappen. In meiner Variante braucht es keine "Duration" zum Prüfen, ob der Timeout läuft, denn dann ist ja der Counter>0. Deswegen auch kein StopTimeout. Aber egal, sollte so auch gehen.
Noch eine Anregung: Ich würde (wie gepostet) beim Trigger "Falls Objekt" nicht auf "wurde geändert" prüfen, sondern auf "größer als letztes". Grund: Der BWM wird normalerweise "true", wenn er Bewegung erkennt und dann wieder "false". In Deiner Variante löst Du also 2x aus.
-
@Segway Das "setze duration auf 0" ganz am Anfang bitte noch wieder aktivieren, sonst startet Dein Script mit einem undefinierten Zustand.
-
Okay duration am Anfang aktiviert und Falls Objekt geändert.
... ich teste -
-
@bbtown
Doch klar aber ich bin froh das es überhaupt funktioniert jetzt und habe mich dann an diese Philosophie gehalten. Dein Vorschlag sieht ja irgendwie komplett anders anders - daher blieb ich erstmal bei dem anderenAber vielleicht teste ich das mal --> momentan zu viel Baustellen