FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Kharim am 27 November 2015, 21:51:11

Titel: Das "übliche" Sleep-Problem
Beitrag von: Kharim am 27 November 2015, 21:51:11
Hallo Zusammen,

ich bin sicher, ich bin nicht der erste der fragt....dennoch habe ich bisher keine Lösung gefunden:

TV:playStatus:.* {
if (ReadingsVal("TV", "playStatus", "") eq "playing"){
system("/Scripte/Farbesetzen.sh 0 0 0 &")}
if (ReadingsVal("TV", "playStatus", "") eq "paused"){
system("/Scripte/Zufallsfarbe.sh &")}
if (ReadingsVal("TV", "playStatus", "") eq "stopped"){
system("/Scripte/Zufallsfarbe.sh &");; sleep 120; system("/Scripte/Farbesetzen.sh 0 0 0 &") }
}


Dies ist ein Notify an einem TV Objekt, was wiederum ein Kodi(XBMC) ist.
Wechselt nun der Status von Play auf Pause wird eine Zufallsfarbe (auf ein rgbLED Band) gesetzt.
Wechselt der Status auf Stop, wird ebenfalls eine Zufallsfarbe gesetzt und nach 2 Minuten ausgeschaltet.

Allerdings friert mir das Sleep das gesamte FHEM ein...:-(
Wie muss ich das Sleep formulieren, das die Aktion verzögert wird, aber nicht das FHEM blockiert?

Danke,
Kharim
Titel: Antw:Das "übliche" Sleep-Problem
Beitrag von: budy am 27 November 2015, 22:06:49
Sleep - in welcher Art auch immer - lässt den FHEM hängen. Besser, du benutzt ein at...
Titel: Antw:Das "übliche" Sleep-Problem
Beitrag von: krikan am 27 November 2015, 22:12:09
rudolfkoenig in http://forum.fhem.de/index.php/topic,27305.msg202037.html#msg202037
Zitat
FHEM-sleep gefolgt von einem Befehl startet diesen Befehl mit einem internen Timer,  ist also sowas wie ein at ohne Namen, und blockiert FHEM nicht. FHEM-sleep ohne ein FHEM-Befehl dahinter ist nichts anderes als ein perl-sleep, und blockiert FHEM. Man sollte die Finger davon lassen.
Titel: Antw:Das "übliche" Sleep-Problem
Beitrag von: justme1968 am 27 November 2015, 22:15:08
es gibt ein perl sleep: auf keinen fall verwenden. es blockiert fhem.

es gibt ein fhem sleep: das ist problemlos und kann verwendet werden.

in deinem fall kannst du entweder ein fhem sleep verwenden, ein temporäres at oder du verlagerst das sleep auf die shell ebene. z.b. so:if (ReadingsVal("TV", "playStatus", "") eq "stopped"){
system("/Scripte/Zufallsfarbe.sh &");;  system("(sleep 120;;/Scripte/Farbesetzen.sh 0 0 0) &") }
}


gruss
  andre
Titel: Antw:Das "übliche" Sleep-Problem
Beitrag von: krikan am 27 November 2015, 22:18:39
@andre:
Ist Rudis von mir zitierte Aussage überholt, d.h. FHEM-sleep ohne folgendes Kommando blockiert nicht mehr?
Titel: Antw:Das "übliche" Sleep-Problem
Beitrag von: justme1968 am 27 November 2015, 22:23:11
ein fhem sleep ohne darauf folgendes kommando blockiert immer noch, erzeugt aber inzwischen eine deprecated meldung im log und macht auch keinen sinn.

das sleep ganz oben im ersten beitrag ist aber ein perl sleep und blockiert immer und auf jeden fall.

die fhem sleep variante würde etwa so aussehen und wäre auch ok:system("/Scripte/Zufallsfarbe.sh &");; fhem( 'sleep 120;; {system("/Scripte/Farbesetzen.sh 0 0 0 &") }')

gruss
  andre
Titel: Antw:Das "übliche" Sleep-Problem
Beitrag von: Kharim am 29 November 2015, 08:38:23
Eieiei...das muss man auch erst einmal wissen.

Ich danke euch.