- Home
- Deutsch
- Skripten / Logik
- Blockly
- "Soft Sleep Timer" - stoppt Wiedergabe m. Fadeout/Ausblenden
"Soft Sleep Timer" - stoppt Wiedergabe m. Fadeout/Ausblenden
-
Da es mich (gefühlt ) jedes Mal aus dem Halbschlaf reißt, wenn Alexas "Sleep Timer" die Wiedergabe plötzlich stoppt (statt sanft auszublenden), habe ich mich mal an einen "Soft Sleep Timer" gewagt - zumindest an eine "dirty version".
Im Moment geht das Skript davon aus, dass der Mensch ein Gewohnheitstier und der Sleep Timer immer gleich lang ist.
Dafür setzt man die Variable "Timer_Minuten" auf den Wert, den der eigene Schlaftimer normal hat, also z.B. 20 Minuten.
Mit "Fadeout_Dauer_Sek" gibt man an, wie lange das Ausblenden dauern soll."Scharf" macht man das ganze dann z.B. mit dem Aufruf
"Alexa, soft sleep timer 20 Minuten".
Da Alexa brav das "soft" ignoriert (vermutlich bis zum nächsten Update ), ist das Ergebnis ein ganz normaler Schlaftimer, sprich Alexa kümmert sich um dem Stopp der Wiedergabe.
Allerdings wird vorher sanft ausgeblendet, sodass man den Stopp nicht wirklich mitbekommen sollte.Am Ende setzt das Skript (hoffentlich, wenn die Wiedergabe bereits beendet it ) die Lautstärke des Echos wieder auf den Wert, den sie vor Beginn des Ausblendens hatte.
Blockly Code, wie immer im "Spoiler".
So, dann geh' ich jetzt mal den "scharfen Test" machen.
In diesem Sinne, N8.PS:Da ich noch immer mit dem alten JS unterwegs bin , weiß ich leider nicht, ob der "Sleep Timer" auch im neuen Datenpunkt aus dem Changelog
3.1.2 (2020-03-18)
(Gieskanne/Apollon77) Add Next Timer Date as statehinterlegt wird. Ich schätze mal nicht, da er auch nicht als Timer in der App auftaucht.
Vielleicht mag mich ja jemand in dem Bezug aufklären, was "Sache" ist.Gut, jetzt aber hoffentlich viel Spaß mit dem Skript und "over and out"...
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="6[fS}w_=8GL;nJ.{X9!R">angesprochener_Echo</variable> <variable type="" id=")vAWRy3`5A]B5Q0tJm4s">Lautstärke</variable> <variable type="" id="jT.QMd7Lcr@glJ#Oy9_e">Lautstärke_alt</variable> <variable type="" id="^6$Vb1Dn(:D:lix^@R]0">Timer_Minuten</variable> <variable type="" id="IN=s}e+i`#g`5sB]Uu*X">Fadeout_Dauer_Sek</variable> <variable type="" id="-+@9xYw}EZ~60,)(%Sm|">Intervalldauer</variable> <variable type="" id="@,d*^2=[1[uacUP|Kb%3">timeout_Zeit</variable> <variable type="undefined" id="timeout">timeout</variable> <variable type="undefined" id="Intervall">Intervall</variable> </variables> <block type="comment" id="d(5WvUT{[lhw-1-zDvz6" x="-212" y="113"> <field name="COMMENT">$VER: Soft Sleep Timer V0.1 (21.04.2020) by padrino</field> <next> <block type="on" id="27`-xMErje!m)QD_w7]w"> <field name="OID">alexa2.0.History.summary</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="jBdX8sG-Ce3Zc(6G?w-V"> <value name="IF0"> <block type="logic_compare" id="]an;7k,w%,x{t~+oyI|x"> <field name="OP">GT</field> <value name="A"> <block type="text_indexOf" id="P$i!g`HOj46n%DH)X/G|"> <field name="END">FIRST</field> <value name="VALUE"> <block type="on_source" id="b@2;:pw,ikTk33xtp3nk"> <field name="ATTR">state.val</field> </block> </value> <value name="FIND"> <shadow type="text" id="R[]8-hi=WXn`OZBK5HJA"> <field name="TEXT">soft sleep</field> </shadow> </value> </block> </value> <value name="B"> <block type="math_number" id="/A3PxBFk;kHH`(e2^_eJ"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="EUsF0hSe++8)Ct:z,P5."> <field name="VAR" id="6[fS}w_=8GL;nJ.{X9!R" variabletype="">angesprochener_Echo</field> <value name="VALUE"> <block type="text_join" id="Uc(C1*DhkN=(Ej:3;/_{"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="3N=uEC@l*)_nr#{g4uNp"> <field name="TEXT">alexa2.0.Echo-Devices.</field> </block> </value> <value name="ADD1"> <block type="get_value" id="mTQ}3#/=?3VG-*}4O,m-"> <field name="ATTR">val</field> <field name="OID">alexa2.0.History.serialNumber</field> </block> </value> </block> </value> <next> <block type="variables_set" id="_)}C]!Y07_c;k%?ZJ^h0"> <field name="VAR" id=")vAWRy3`5A]B5Q0tJm4s" variabletype="">Lautstärke</field> <value name="VALUE"> <block type="get_value_var" id="Mj;YG};1*~g.FQ6bxEf}"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id=":8}{V**?X)l04{]K~xOM"> <field name="TEXT"></field> </shadow> <block type="text_join" id="x!PzkCk)ygUd8z%MbMzu"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="H_COX2BADG/Zv2AD[%5h"> <field name="VAR" id="6[fS}w_=8GL;nJ.{X9!R" variabletype="">angesprochener_Echo</field> </block> </value> <value name="ADD1"> <block type="text" id="E|q29/u43a=DeTghbcsC"> <field name="TEXT">.Player.volume</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="7v2Wgp_%25mvbDMDqLRE"> <field name="VAR" id="jT.QMd7Lcr@glJ#Oy9_e" variabletype="">Lautstärke_alt</field> <value name="VALUE"> <block type="variables_get" id="|hEgwhd2{d1nk5V6J%UB"> <field name="VAR" id=")vAWRy3`5A]B5Q0tJm4s" variabletype="">Lautstärke</field> </block> </value> <next> <block type="variables_set" id="edA1:gzbH;c%!{/Mztoh"> <field name="VAR" id="^6$Vb1Dn(:D:lix^@R]0" variabletype="">Timer_Minuten</field> <value name="VALUE"> <block type="math_number" id="Gib{qJi`;bdLzrwM%k)#"> <field name="NUM">1</field> </block> </value> <next> <block type="variables_set" id="5?FX;Ag5;c@@]E`wwmDz"> <field name="VAR" id="IN=s}e+i`#g`5sB]Uu*X" variabletype="">Fadeout_Dauer_Sek</field> <value name="VALUE"> <block type="math_number" id="A{jpm%uOJ%i9~=NS[7J("> <field name="NUM">30</field> </block> </value> <next> <block type="variables_set" id="R_un?IiSuNwO~S#R4Hma"> <field name="VAR" id="-+@9xYw}EZ~60,)(%Sm|" variabletype="">Intervalldauer</field> <value name="VALUE"> <block type="math_round" id="(oPh9Z`|rm*L|?ksiSk0"> <field name="OP">ROUND</field> <value name="NUM"> <shadow type="math_number" id="3#E-x[$}Ap6Xkr/R$YYh"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="F2Q/#PrxRv:{M.]wD}_9"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="at|#!(sS32f;1ralLZGo"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="^%#wpcQBih8W%/!WeCjJ"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="mK*NeYU-z|sJ@6$(!Bu0"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="eq}v(kti}9%}:wrnaL!?"> <field name="VAR" id="IN=s}e+i`#g`5sB]Uu*X" variabletype="">Fadeout_Dauer_Sek</field> </block> </value> <value name="B"> <shadow type="math_number" id="gGLIyK[`-B_DkEzM-!3)"> <field name="NUM">1000</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="0^LTfm}ny_u?0yM,qg0w"> <field name="NUM">1</field> </shadow> <block type="math_round" id="17Rig.noX#j__UtHLQQx"> <field name="OP">ROUND</field> <value name="NUM"> <shadow type="math_number" id="V@L6@1./.nuabbsA%R?5"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="`A1!.sF+Ch[K{GjrgIn*"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="z*oZd%FNU7UFvt4_;d3."> <field name="NUM">1</field> </shadow> <block type="variables_get" id="BrEJ6??$eL=oX+=HMQHc"> <field name="VAR" id=")vAWRy3`5A]B5Q0tJm4s" variabletype="">Lautstärke</field> </block> </value> <value name="B"> <shadow type="math_number" id="})je^HEF-?AKXX6W5p{Y"> <field name="NUM">3</field> </shadow> </value> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="I*Kz@K;dnFux-w@AK;^1"> <field name="VAR" id="@,d*^2=[1[uacUP|Kb%3" variabletype="">timeout_Zeit</field> <value name="VALUE"> <block type="math_arithmetic" id="(+Skz6iD_e3POC#n)ybv"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="NoZ2i*(r;lc%aQ!hOhF#"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="-wPI*R`.9WvqnWn3Ry+a"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="IN0v,3M[1B.Bh9t_~Y#Z"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="/odH@Gr|N){gKLm5-X`$"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="0@~(xEkm)[57|t4npfma"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="@s4s*11^dW(N$@E#gi+v"> <field name="VAR" id="^6$Vb1Dn(:D:lix^@R]0" variabletype="">Timer_Minuten</field> </block> </value> <value name="B"> <shadow type="math_number" id="PQC(}nPh6=FF9fm_r//O"> <field name="NUM">60</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="+$?u%-?P0_)_7iH3_Kpo"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="gW5uY46t,;sgjCDD2k5}"> <field name="VAR" id="IN=s}e+i`#g`5sB]Uu*X" variabletype="">Fadeout_Dauer_Sek</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="AB;;{.e-+#zV@^yUi05G"> <field name="NUM">1000</field> </shadow> </value> </block> </value> <next> <block type="timeouts_settimeout" id="=~Nb!LhzoY}(bp`*cN(-"> <field name="NAME">timeout</field> <field name="DELAY">timeout_Zeit</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="timeouts_setinterval" id="[p-zMK.i(*:W~r8wC2D*"> <field name="NAME">Intervall</field> <field name="INTERVAL">Intervalldauer</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="variables_set" id="])!so6hhYuQMj+NY`TUc"> <field name="VAR" id=")vAWRy3`5A]B5Q0tJm4s" variabletype="">Lautstärke</field> <value name="VALUE"> <block type="math_arithmetic" id="KD[RmP^:FlxjT_mO}oY6"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="b=BHh7RF?D7_bk[h7B7I"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="TbEw:wbTU3$frd!8l=wU"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="g[es1Tvw!QHKhT)*Tjk|"> <field name="TEXT"></field> </shadow> <block type="text_join" id="ABy?%0QG*q=w/L.k)Rx0"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="{[m7-zrNut+LLK#(ipY#"> <field name="VAR" id="6[fS}w_=8GL;nJ.{X9!R" variabletype="">angesprochener_Echo</field> </block> </value> <value name="ADD1"> <block type="text" id="xx#i$?Ab1;$R-Te(41K,"> <field name="TEXT">.Player.volume</field> </block> </value> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="#9|$,Tj#/R`/{I`Fdlcs"> <field name="NUM">3</field> </shadow> </value> </block> </value> <next> <block type="control_ex" id="w?A_V#nD$0ZFrT^m)!X3"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="R4[d=HO`Ph=JjpL;}W6R"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="`*$YssQ6vAW]_!TI5ud8"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="{e%KJ9cLuRT~=/$1{$jA"> <field name="VAR" id="6[fS}w_=8GL;nJ.{X9!R" variabletype="">angesprochener_Echo</field> </block> </value> <value name="ADD1"> <block type="text" id="6f~+rI:x4`ykh,{[Nl8l"> <field name="TEXT">.Player.volume</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id=")CL_at$e{nWL,J8l*2|K"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="rV=72sg2:MvDzf!n|o{0"> <field name="VAR" id=")vAWRy3`5A]B5Q0tJm4s" variabletype="">Lautstärke</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="liK?2]k[HK=vj05ofgl;"> <field name="NUM">0</field> </shadow> </value> <next> <block type="controls_if" id="FyMHi?N|]wrH4|Zj#}@6"> <value name="IF0"> <block type="logic_compare" id="rL^bI}6vsxmczv=Bz^~j"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="IPaKRLH_]i?O[I*T1K$Z"> <field name="VAR" id=")vAWRy3`5A]B5Q0tJm4s" variabletype="">Lautstärke</field> </block> </value> <value name="B"> <block type="math_number" id="xKOE+qK{(tM6d]fxJj6U"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control_ex" id="GCyetWI$DuIJt/75!6-F"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="R4[d=HO`Ph=JjpL;}W6R"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="AGT?]}b;`X,0tBl+{!r*"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="]@^/6{1Vm`a!tFkZB93y"> <field name="VAR" id="6[fS}w_=8GL;nJ.{X9!R" variabletype="">angesprochener_Echo</field> </block> </value> <value name="ADD1"> <block type="text" id="XI);}:9q?+-^r+$qURSl"> <field name="TEXT">.Player.volume</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id=")CL_at$e{nWL,J8l*2|K"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="^(()(LiFpH:hZJvHbiYg"> <field name="VAR" id="jT.QMd7Lcr@glJ#Oy9_e" variabletype="">Lautstärke_alt</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="uHQ0||10l$_hwtaI`?!t"> <field name="NUM">5000</field> </shadow> </value> <next> <block type="timeouts_clearinterval" id="MKi2619{vc;Ladt#8P/X"> <field name="NAME">Intervall</field> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </xml>
-
So, hier V 0.2
Man muss nun die Länge des Timers nicht mehr von Hand im Skript festlegen.
Sie wird nun aus dem Aufruf des Sleeptimers extrahiert.
Voraussetzung ist, dass man sie nur in Minuten angibt (es geht bis "x hundert Minuten"), also z.B. "120 Minuten" statt "2 Stunden".V 0.2 (diesmal als Anhang, da die Codelänge die des Posts sprengt )
SoftSleepTimer.txtPS: "Next Timer Date" wird bei einem "Sleep Timer" nicht gesetzt, also ist Handarbeit gefragt.