[GELÖST] Verwendung/Vermeidung von sleep in DOIFs

Begonnen von ComputerZOO, 16 April 2017, 11:16:19

Vorheriges Thema - Nächstes Thema

ComputerZOO

Moin und frohe Ostern,
Ich hätte da mal eine Frage bzgl. der Verwendung von sleep in einem DOIF. Folgendes Device signalisiert mir ob jemand gerade geklingelt hat:
([fl.gpio.klingel:"on"]) (
set sys.msg.pushover msg 'FHEM' 'Es ist jemand an der Tür.';

set wz.lightscene save SaveScene;

set wz.squeezebox.classic cliraw playerpref powerOffBrightness 4;
set wz.squeezebox.classic cliraw playerpref idleFont_curr 1;
set wz.squeezebox.classic show line1:+++ Information ++ line2:Es ist jemand an der Tür. duration:20;
set wz.squeezebox.classic cliraw playerpref idleFont_curr 2;
set wz.squeezebox.classic cliraw playerpref powerOffBrightness [d.squeezebox.brightness:state];

set wz.hue.color.tv.links pct 100 : rgb FF0000;
set wz.hue.color.tv.rechts pct 100 : rgb FF0000;

sleep 20;

set wz.lightscene scene SaveScene;
)

Das Attribut do steht auf always, wait auf 2 (um das Ganze etwas zu entprellen und dadurch doppelte Pushs bei etwas lockerem Finger auf dem Klingeltaster zu verhindern).

Jetzt schlägt mir die Funktion checkDOIF aber folgendes vor:
Zitatsleep im DOIF zu nutzen, wird nicht empfohlen, nutze das Attribut wait für (Verzögerungen)


Wie kann ich mein DOIF anders lösen, es funktioniert (scheinbar) einwandfrei?

binford6000

Moin und ebenfalls frohe Ostern!

ZitatWie kann ich mein DOIF anders lösen, es funktioniert (scheinbar) einwandfrei?

Du könntest zB sowas machen:

([fl.gpio.klingel:"on"]) (
set sys.msg.pushover msg 'FHEM' 'Es ist jemand an der Tür.';

set wz.lightscene save SaveScene;

set wz.squeezebox.classic cliraw playerpref powerOffBrightness 4;
set wz.squeezebox.classic cliraw playerpref idleFont_curr 1;
set wz.squeezebox.classic show line1:+++ Information ++ line2:Es ist jemand an der Tür. duration:20;
set wz.squeezebox.classic cliraw playerpref idleFont_curr 2;
set wz.squeezebox.classic cliraw playerpref powerOffBrightness [d.squeezebox.brightness:state];

set wz.hue.color.tv.links pct 100 : rgb FF0000;
set wz.hue.color.tv.rechts pct 100 : rgb FF0000;)

(set wz.lightscene scene SaveScene;
)


und mit

attr klingel_di wait 0,20

das sleep 20 umgehen  ;)

VG Sebastian

ComputerZOO

#2
Hmm, ich denke das wird nicht funktionieren, da ja das attr wait dieses DOIFs bereits benutzt wird (ich denke das meintest du mit attr klingel_di wait 0,20.

Ich stehe allerdings auch etwas auf dem Schlauch mit deiner Klammersetzung  ::)


EDIT:
Ah, jetzt, ja,
Habe mich gerade nochmal mit der DOIF-Referenz auseinander gesetzt, jetzt ergibt es bei mir auch Sinn: attr wait 1,20 mit den von dir vorgeschlagenen Klammern funktioniert einwandfrei.