Hauptmenü

[Erledigt] Frage zu Sleep

Begonnen von Det20, 20 Januar 2019, 18:10:08

Vorheriges Thema - Nächstes Thema

Det20

Hallo,

ich schlage mich gerade mit dem (FHEM eigenen) Sleep rum und eine Sache will mir nicht so ganz einleuchten. Wenn ich in einer Schleife 5 mal jeweils "Sleep 1; Mache x" aufrufe und Sleep intern AT verwendet, wird dann nicht alles in 1 Sekunde auf einmal aufgerufen? Das ist doch dann nicht nacheinander, sondern parallel. Oder sehe ich das falsch? Wenn dem so ist, dann brauche ich Sleep doch, wenn tatsächlich auf das Ende des vorherigen Sleeps gewartet werden muss.

KernSani

sleep verzögert alles, was hinter dem sleep kommt. Du musst dir also den gesamten Befehl in der Schleife zusammen bauen und dann als einen Befehl abschicken...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Det20

Also alles auf einmal? Dachte ich es mir doch. Anders sieht es so aus, oder? Hier müsste es wirklich der Reihe nach ablaufen.


  while($Step<0)
  {
    fhem("sleep 1");
    fhem("MacheX");
    ....
  };

Otto123

#3
Vorsicht "alles" ist missverständlich
FHEM sleep erzeugt ein at mit dem FHEM Befehl der danach kommt.
Eine Befehlskette wird analysiert und
Befehl1;sleep 1;Befehl2;sleep 2;Befehl3
wird nicht als Folgekette abgearbeitet, sondern es werden zwei at's gestartet, dass 1. mit Befehl2 und dass 2. mit Befehl3

While in FHEM ist keine gute Idee! Verwende Events!

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Det20

Zitat von: Otto123 am 20 Januar 2019, 18:30:26
sondern es werden zwei at's gestartet, dass 1. mit Befehl2 und dass 2. mit Befehl3

Und die starten dann alle exakt gleich, wenn die Sleeps gleich sind?

Otto123

#5
Nö kann ich gerade nicht bestätigen.  :-\sleep 10;set Aktor1 on;sleep 10;set Aktor2 onMacht brav was Du erwarten würdest.
Aber ich hatte die Situation schon, das scheinbar alles parallel lief. Ich bin am suchen ....

Edit: gefunden -> https://forum.fhem.de/index.php/topic,90465.msg829255.html#msg829255
Das war in meiner Erinnerung...

Im übrigen:
    fhem("sleep 1");
    fhem("MacheX");
sleep ohne einen FHEM Befehl danach ist blockierend!

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

KernSani

Zitat von: Otto123 am 20 Januar 2019, 18:30:26
While in FHEM ist keine gute Idee! Verwende Events!
dem stimme ich voll und ganz zu :)

Zitat von: Otto123 am 20 Januar 2019, 18:30:26
Befehl1;sleep 1;Befehl2;sleep 2;Befehl3
wird nicht als Folgekette abgearbeitet, sondern es werden zwei at's gestartet, dass 1. mit Befehl2 und dass 2. mit Befehl3
Widerspruch:
define myAt at +00:00:01 set Dummy1 on;;sleep 5;;set Dummy2 off;;sleep 5;;set Dummy3 on

ergibt

2019.01.20 19:00:42 3: myAt: Please define Dummy1 first
2019.01.20 19:00:47 2: After sleep: Please define Dummy2 first
2019.01.20 19:00:52 2: After sleep: Please define Dummy3 first



EDIT: Otto war schneller :-)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Det20

Danke für die Erklärungen