Das "übliche" Sleep-Problem

Begonnen von Kharim, 27 November 2015, 21:51:11

Vorheriges Thema - Nächstes Thema

Kharim

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
Raspberry Pi 2 + Minibian + 2x MAX Cube CUN (868/433Mhz) + Thermostate + Fensterkontakte + Taster+RGB-LED Band über pigpiod + TFA Sensoren 30.3169/3125
Raspberry Pi 2 + Minibian +Z-Wave (USB) + Bewegungsmelder + Fensterkontakt + Sirene + SMS Steuer-/Benachrichtigung (ohne Internet)

budy

Sleep - in welcher Art auch immer - lässt den FHEM hängen. Besser, du benutzt ein at...
Debian stretch, FHEM 5.9.
HM-CC-RT-DN, HM-ES-PMSw1-Pl, HM-LC-Dim1TPBU-FM, HMUARTLGW, HMLAN, HM-SEC-KEY, HM-SEC-RHS, HM-SEC-SC-2, HM-SEC-SCo, HM-SEC-SD-2, HM-OU-CFM-TW, div. HUEs, Wifilight, Ring Video Pro

krikan

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.

justme1968

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

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

krikan

@andre:
Ist Rudis von mir zitierte Aussage überholt, d.h. FHEM-sleep ohne folgendes Kommando blockiert nicht mehr?

justme1968

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

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

Kharim

Eieiei...das muss man auch erst einmal wissen.

Ich danke euch.
Raspberry Pi 2 + Minibian + 2x MAX Cube CUN (868/433Mhz) + Thermostate + Fensterkontakte + Taster+RGB-LED Band über pigpiod + TFA Sensoren 30.3169/3125
Raspberry Pi 2 + Minibian +Z-Wave (USB) + Bewegungsmelder + Fensterkontakt + Sirene + SMS Steuer-/Benachrichtigung (ohne Internet)