Hallo zusammen,
ich habe jetzt einen Fall, bei dem ich in einem DOIF einen Timer unbedingt ausführen lassen will, dieser (im cmd_2) soll nicht durch andere Events gelöscht werden können.
Gelöst ist jetzt mit einem "at":
### Regen -> Stop!
([Regensensor_Regen] eq "rain" )
(set shaun changeCfgTimeExtend -100;
set nexus7 ttsSay Es fängt an zu regnen;)
### Mäht -> nach 1,5 h sperren, Feierabend für heute
DOELSEIF ([shaun:mowerStatusTxt] eq "Start sequence")
(define t_robot_feierabend at +1:30:00 setreading $SELF HeuteSchonGemaeht Feierabend)
### Morgens Sperre für Mähen entfernen
DOELSEIF ([08:00])
(setreading $SELF HeuteSchonGemaeht BereitZumMähen;
set shaun changeCfgTimeExtend 0;)
### Nach Verzögerung wieder trocken
DOELSE
(IF ([$SELF:HeuteSchonGemaeht] eq "BereitZumMähen") (set shaun changeCfgTimeExtend 0))
Die Doku habe ich schon mehrfach rauf und runter gelesen, ich habe leider nichts gefunden, was den Befehl, s. oben:
(define t_robot_feierabend at +1:30:00 setreading $SELF HeuteSchonGemaeht Feierabend)
ersetzen könnte.
Was habe ich übersehen/nicht verstanden?
Vielen Dank für einen Hinweis!
Gruß,
Friedhelm
sleep sollte hierfür ausreichen:
DOELSEIF ([shaun:mowerStatusTxt] eq "Start sequence")
(sleep 90; setreading $SELF HeuteSchonGemaeht Feierabend)
wait wird immer unterbrochen, es sei denn man lagert diesen Fall in einen separaten DOIF ohne DOELSE aus.
@Damian: warum hier ein ";" und nicht "," ?
Zitat von: amenomade am 05 Mai 2019, 19:59:01
@Damian: warum hier ein ";" und nicht "," ?
weil ; zum sleep dazugehört, was danach kommt kann man als Übergabeparameter von sleep ansehen
Danke, schon wieder was gelernt :)