FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: ComputerZOO am 16 April 2017, 11:16:19

Titel: [GELÖST] Verwendung/Vermeidung von sleep in DOIFs
Beitrag von: ComputerZOO am 16 April 2017, 11:16:19
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?
Titel: Antw:Verwendung/Vermeidung von sleep in DOIFs
Beitrag von: binford6000 am 16 April 2017, 12:11:34
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
Titel: Antw:Verwendung/Vermeidung von sleep in DOIFs
Beitrag von: ComputerZOO am 16 April 2017, 13:34:32
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.