FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Jojo11 am 10 März 2014, 19:06:48

Titel: Mehrere Schaltvorgänge in at mit sleep
Beitrag von: Jojo11 am 10 März 2014, 19:06:48
Hallo,

ich würde gerne mehrere Rollladen mit ein paar Sekunden Abstand hintereinander fahren lassen, ohne für jeden Rollladen ein eigenes "at" zu definieren. Getestet habe ich folgenden code (mit 15 Rollladen):

define Rollladen_rauf at *{sunrise(0,"07:00:00","09:00:00")} {if (!$we) {\
fhem("set sz_R 100");;\
fhem("sleep 5");;\
fhem("set bad_R 100");;\
fhem("sleep 5");;\
fhem("set to_R 100");;\
}\
}

Allerdings fährt mit diesem code der erste Rollladen normal und dann passiert erstmal nix mehr. Im log file erscheinen die Kommandos im richtigen zeitlichen Abstand. Nach ewiger Verzögerung fahren dann plötzlich alle restlichen Rollladen, wobei der eigentlich zweite nur ein paar Zentimeter gefahren ist (evtl. timeout?) und dann gedacht hat, er sei komplett gefahren.
aus der Referenz (http://fhem.de/commandref_DE.html#sleep (http://fhem.de/commandref_DE.html#sleep)) hatte ich eigentlich verstanden, dass ein sleep im at kein Einfrieren verursachen würde.
Nebenbei ist mir aufgefallen, dass dort steht, dass die Verzögerung in Millisekunden angegeben wird, laut log file sind es aber Sekunden (ich glaube die deutsche Übersetzung ist hier falsch. Richtig müsste es eher heißen "Wartet für die angegebene Anzahl von Sekunden (mit einer Millisekunden-Genauigkeit)".

Was  habe ich falsch gemacht  :-\ ?

schöne Grüße
Jo
Titel: Antw:Mehrere Schaltvorgänge in at mit sleep
Beitrag von: Puschel74 am 10 März 2014, 19:11:21
Hallo,

ich würde das mal so versuchen
define Rollladen_rauf at *{sunrise(0,"07:00:00","09:00:00")} {if (!$we) {
fhem("set sz_R 100");
fhem("define naechster_1 at +00:00:05 set bad_R 100");
fhem("define naechster_2 at +00:00:10 set to_R 100");
}
}


Es wird automatisch für jeden Rollladen ein at definiert - nur eben 5 Sekunden, 10 Sekunden ... nachdem das "Haupt-at" zugeschlagen hat.
Was machen die Rollläden dann?

Achtung! Der Code ist nur und ausschliesslich für das DEF gedacht und nicht! für die fhem.cfg

Grüße
Titel: Antw:Mehrere Schaltvorgänge in at mit sleep
Beitrag von: justme1968 am 10 März 2014, 19:11:33
du musst alles zusammen in einen einzigen fhem() Aufruf packen.

intern funktioniert das sleep so das alles was nach dem sleep kommt mit einem at verzögert ausgeführt wird. wenn hinter dem sleep nichts mehr kommt kann auch nichts verzögert werden und dann wird doch aktiv gewartet.

also fhem("set sz_R 100;sleep 5;set bad_R 100;sleep 5;set to_R 100");mit dem verdoppeln der ; musst du etwas spielen. je nach dem wo du es eingibst 2 oder 4 fach.

gruss
  andre
Titel: Antw:Mehrere Schaltvorgänge in at mit sleep
Beitrag von: Jojo11 am 10 März 2014, 19:24:47
Super. Danke Euch beiden für die schnelle Antwort! Jetzt habe ich was zum Testen  ;D

Nachtrag: Die Lösung von Andre funktioniert bestens. Es lag daran, dass ich die Befehle nicht in ein einziges fhem("xxx") gepackt habe.

schöne Grüße
Jo