NEWS
Einfache Timersteuerung mit rekursiver Prüfung
-
Hi,
für meine Gartenbewässerung habe ich eine ganz einfach Timersteuerung gebaut, die soweit gut funktioniert. Ich weiß, dass es elegantere Möglichkeiten gibt, aber so finde ich es topp!
Bei Betätigung einer Taste, startet die Bewässerung und endet nach 20 Min.
Da ich den Ventilen noch nicht 100%ig vertraue, möchte ich sicher gehen, dass der "false"-Befehl so lange gesendet wird, bis das Ventil zu ist (="false").
Nun meine Frage:
So machte es mMn keinen Sinn, da der "wiederhole"-Befehl nicht auch nach 20 Min abgearbeitet wird.
Könnte ich stattdessen nicht mit einer Verzögerung, sondern mit einer Pause arbeiten:
Oder wie könnte ich es lösen?
Danke für Eure Tipps! -
@m1r0o sagte in Einfache Timersteuerung mit rekursiver Prüfung:
Hi,
für meine Gartenbewässerung habe ich eine ganz einfach Timersteuerung gebaut, die soweit gut funktioniert. Ich weiß, dass es elegantere Möglichkeiten gibt, aber so finde ich es topp!Da ich den Ventilen noch nicht 100%ig vertraue, möchte ich sicher gehen, dass der "false"-Befehl so lange gesendet wird, bis das Ventil zu ist (="false").
Nun meine Frage:
So machte es mMn keinen Sinn, da der "wiederhole"-Befehl nicht auch nach 20 Min abgearbeitet wird.
Nein, wird er nicht. der Wiederhole Befehl wird deinen ioBroker mit 100% Systemlast belasten bis das Ventil offen ist - nicht ideal.
nebenbei - es fehlt der Haken bei 'löschen falls läuft'Was du willst:
An Stelle des wiederhole bis kommt zuerst ein 'anhalten Intervall' , dann ein 'ausführen Intervall' alle 1 s. Darin dein Falls-Baustein, zusammen mit einem 'sonst', in dem steht 'anhalten intervall'Zusätzlich empfehle ich (muss aber nicht):
An Stelle des steuere set mit falsch mit Verzögerung kommt:- ein anhalten timeout
- ein timeout in 20 Min. Darin ein steuere set mit falsch sowie ein anhalten Intervall
Oder wie könnte ich es lösen?
Danke für Eure Tipps!A.
-
@asgothian
Wow, danke!
DAs muss ich mir erstmal vor Augen führen.
Dafür habe ich direkt Fragen:- was genau meint 'löschen falls läuft'?
- was genau ist das 'anhalten Intervall'? (ausführen finde ich)
-
@m1r0o sagte in Einfache Timersteuerung mit rekursiver Prüfung:
@asgothian
Wow, danke!
DAs muss ich mir erstmal vor Augen führen.
Dafür habe ich direkt Fragen:- was genau meint 'löschen falls läuft'?
Sollte das Skript ein zweites mal getriggert werden, dann wird - sofern der Haken gesetzt ist - die verzögerte Ausführung vom vorherigen mal (wenn sie noch aktiv ist) gelöscht bevor sie neu mit (in diesem Fall) 20 Minuten gesetzt wird
- was genau ist das 'anhalten Intervall'? (ausführen finde ich)
Siehe hier:
-
@asgothian
so?Ich habe bisher nicht mit Intervallen und Timeouts gearbeitet, sorry.
-
fast:
- das stop timeout im Timeout ist unnötig.
- du hat für das Intervall den falschen Baustein zum abschalten genommen.
-
-
@m1r0o der stop timeout vor dem ausführen Intervall muss auch noch auf 'stop zyklische Ausführung Intervall' umgesetzt werden, sonst geht es nicht.
A.
-
-
Nun bist du fast da:
- im falls Baustein fehlt eingesetzt das 'steuere set mit wahr' um das ganze nochmal anzusteuern
A
-
@asgothian
Danke. Ist am Handy gerade nicht machbar. Mache ich später.
Zum Verständnis: Ich setzte „falls ≠ falsch“ steuere „falsch“Korrekt?
-
@m1r0o sagte: Oder wie könnte ich es lösen?
De Prüfung darf erst nach den 20 Minuten erfolgen, weshalb man sie in ein Timeout packt. Die eigentliche Prüfung erfolgt schon in der Schleifen-Bedingung und muss dann nicht nochmal erfolgen. Um nur z.B. jede Sekunden zu prüfen, kann man eine Pause in die Schleife setzen. Ohne die Pause wird im ms-Takt gefeuert!! Außerdem sollte man nach einer bestimmten Anzahl der Wiederholungen abbrechen und nicht unendlich oft senden.
-
ICh habe es jetzt so umgesetzt und auch verstanden (hoffe ich
)!!
Danke euch beiden!Ich werde mir einen Shelly in die Pumpensteuerung setzen, der die Pumpe im Notfall ausschaltet, anstatt mir eine Mail zu senden, falls es zu häufig passiert.
-
@m1r0o sagte: so umgesetzt und auch verstanden
Das Stoppen eines (nicht vorhandenen) Intervalls ist unnütz. Stattdessen muss die Schleife abgebrochen werden, wenn 50 Wiederholungen gelaufen sind.