Mehrere Schaltvorgänge in at mit sleep

Begonnen von Jojo11, 10 März 2014, 19:06:48

Vorheriges Thema - Nächstes Thema

Jojo11

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) 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

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Jojo11

#3
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