Hallo,
ich muss mal wieder die Genies benühen. Ich habe wieder Problem mit ; Bitte mal drüber schauen
define n_allepumpenhintereinander notify Pumpe_Alle:on {fhem("set Pumpevtest on ;; define tmp_time1 at +00:00:05 set Pumpevtest off; set Pumpettest on ;; define tmp_time2 at +00:00:10 set Pumpettest off; set Pumpewtest on ;; define tmp_time3 at +00:00:15 set Pumpewtest off; set Pumpe_Alle off")}
Ich möchte meine Pumpen im Abstand von (hier alles nur Test) einer bestimmten Zeit laufen lassen. Dazu mache ich die erste direkt an und im Rahmen der at-Zeiten alle (testweise 5 sec) die vorher angeschaltete aus und eine weitere an. Zum Abschluss wird ein Dummy zurückgesetzt. Das läuft auch dann, wenn ich nur ein Device schalte. Bitte um Hilfe. Danke.
LG Peter
Hallo Peter,
in der FHEM Kommanozeile muss jedes ; was in der DEF bleiben soll verdoppelt werden!
Hier wird es mehrfach ungenügend:
Zitatset Pumpevtest off; set Pumpettest on
In einem define in einem define muss dann wieder alles verdoppelt werden!
https://commandref.fhem.de/commandref_DE.html#command
Für meine Begriffe tust Du dich bei deinem notify leichter, wenn Du sleep verwendest (ungetestet):
define n_allepumpenhintereinander notify Pumpe_Alle:on set Pumpevtest on ;; sleep 5;; set Pumpevtest off;; set Pumpettest on ;; sleep 10 ;; set Pumpettest off;; set Pumpewtest on ;; sleep 15 ;; set Pumpewtest off;; set Pumpe_Alle off
Gruß Otto
Und ich empfehle on-for-timer, wenn die Geraete sowas verstehen.
oh, ein Popcorn-Thread... 8)
Hallo alle,
erstmal Danke. Von Otto sieht ja schon sehr viel einfacher aus.
Wenn ich on-for-timer nehme, erreiche ich aber doch nicht, dass die dann brav hintereinander laufen.
Und wenn ich mir das so ansehe, könnte ich es doch auch in einen Doif mit wait machen so:
defmod di_allepumpenhintereinander DOIF ([Pumpe_Alle] eq "on"") (set PumpeVorne_HM on) (set PumpeVorne_HM off, set PumpeTerrasse_HM on) (set PumpeTerrasse_HM off, set PumpeWiese_HM on) (set PumpeWiese_HM off, set Pumpe_Alle off)
wait 0,900,900,900
Das müsste doch auch funktionieren?
LG Peter
ZitatWenn ich on-for-timer nehme
Aber Du erreichst, dass der Hardware Timer es macht und Dein Garten nicht geflutet wird wenn irgendwas stehen bleibt.
Dein DOIF wird nicht gehen: Anzahl der " und die wait Konstruktion - da bin ich spontan unsicher.
Ja, das mit den Wait-Blöcken würde stimmen, aber ihr plädiert ja dann für diese Lösung:
define n_allepumpenhintereinander notify Pumpe_Alle:on set Pumpevtest on-for-timer 5 ;; sleep 5;; set Pumpettest on-for-timer 5 ;; sleep 5 ;; set Pumpewtest on-for-timer 5 ;; sleep 5 ;; set Pumpe_Alle off
Sleep führt hier ja nicht zum Stillstand von FHEM so wie ich das irgendwo gelesen habe (nur sicherheitshalber)?
LG Peter
dann hätte ich es nicht empfohlen :)
Danke für die Hilfe, dann lass ich das so.