Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Subfunktion in Blockly

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Subfunktion in Blockly

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      Tottbeck last edited by

      Hallo zusammen und Frohes Neues Jahr,

      ich bastele mir gerade eine Alarmanlage mit Xiaomi-Komponenten und Alexa zusammen.

      578f9f89-3173-4c67-b7ea-22ee31f641d3-image.png

      Zwei Fragen dazu:

      1. Ich möchte für die Sprachausgabe temporär die Alexa-Lautstärke verändern und danach wiederherstellen. Das an vielen verschiedenen Programmteilen zu machen finde ich suboptimal.
        Mit "normalen" Programmiersprachen würde ich wohl eine Subfunktion mit Parameter für die gewünschten Lautstärke und einem Pointer auf den Text anlegen. Kann man das auch per Blockly machen?

      2. Das Blinken vom Xiaomi-Gateway (langsam in Blau für Aktiv, Schnell in Rot für Alarm) klappt nicht so wirklich. Manchmal geht es, aber irgendwie nicht stabil und nicht im gewünschten Zyklus/Farbe. Gibt es dazu Erfahrungswerte, was man dem Ding zumuten darf?

      Danke

      dslraser 2 Replies Last reply Reply Quote 0
      • dslraser
        dslraser Forum Testing Most Active @Tottbeck last edited by

        @Tottbeck sagte in Subfunktion in Blockly:

        Ich möchte für die Sprachausgabe temporär die Alexa-Lautstärke verändern und danach wiederherstellen.

        genau das macht dieser Datenpunkt. Volume to use for speak commands. Du musst den nur für diese Ansage setzen, danach geht der selbst wieder auf die sonst eingestellte Lautstärke zurück.

        dslraser T 2 Replies Last reply Reply Quote 2
        • dslraser
          dslraser Forum Testing Most Active @Tottbeck last edited by dslraser

          @Tottbeck sagte in Subfunktion in Blockly:

          temporär die Alexa-Lautstärke verändern

          Probiere mal das hier. Das nutze ich in ähnlicher Form in vielen Blocklys. Hier wird geschaut welcher ECHO angesprochen wurde und genau auf dem angesprochenen wieder geantwortet. (es sei denn es sind mehrere ECHOS in Hörweite und ein anderer fühlt sich angesprochen) In Räumen, wo mich nur ein ECHO hören kann funktioniert es zuverlässig bei mir.
          Diesen Trigger habe ich nur zum Test da drinn.

          Importiere das mal und starte das Blockly. Anschließend sagst Du mal Testansage. (dann sollte die Antwort kommen)
          Bildschirmfoto 2020-01-01 um 19.01.46.png

          <xml xmlns="http://www.w3.org/1999/xhtml">
           <variables>
             <variable type="" id="]8CjUu1tTXk^pZvPD9pk">Lautstaerke</variable>
             <variable type="" id="tx`]izPXI!BeK19V`CX$">angesprochener_echo</variable>
             <variable type="" id="}tfHo!d;DNiy8lns,/nq">speak_volume</variable>
             <variable type="" id="xn1_(a%|e4G}G4FdbhX:">Ansage</variable>
           </variables>
           <block type="on" id="pPAe?D9#C-MzNdYWPK]r" x="38" y="63">
             <field name="OID">alexa2.0.History.summary</field>
             <field name="CONDITION">any</field>
             <field name="ACK_CONDITION"></field>
             <statement name="STATEMENT">
               <block type="controls_if" id="fQlWBQZN^e.:DrM[^7{4">
                 <value name="IF0">
                   <block type="logic_compare" id="2pJO@[Vtpx6B{6|hU{AM">
                     <field name="OP">EQ</field>
                     <value name="A">
                       <block type="get_value" id="DyA~MCr`D%W17,P!,xZs">
                         <field name="ATTR">val</field>
                         <field name="OID">alexa2.0.History.summary</field>
                       </block>
                     </value>
                     <value name="B">
                       <block type="text" id="%4nBc3D)J=jtRdxt$XgL">
                         <field name="TEXT">testansage</field>
                       </block>
                     </value>
                   </block>
                 </value>
                 <statement name="DO0">
                   <block type="variables_set" id=".}l{$)R}!so3?49}ZI29">
                     <field name="VAR" id="]8CjUu1tTXk^pZvPD9pk" variabletype="">Lautstaerke</field>
                     <value name="VALUE">
                       <block type="math_number" id="w!aFM4SyFphGj^,/nlyu">
                         <field name="NUM">100</field>
                       </block>
                     </value>
                     <next>
                       <block type="variables_set" id="raHp)T;G6o1nDaQZ5Qrg">
                         <field name="VAR" id="tx`]izPXI!BeK19V`CX$" variabletype="">angesprochener_echo</field>
                         <value name="VALUE">
                           <block type="text_join" id="q`1!?SO4KN9hG:/?YC1L">
                             <mutation items="3"></mutation>
                             <value name="ADD0">
                               <block type="text" id="lG5cq|_e-SYygMARlNe%">
                                 <field name="TEXT">alexa2.0.Echo-Devices.</field>
                               </block>
                             </value>
                             <value name="ADD1">
                               <block type="get_value" id="M7plEDg{8pq2=J9a2fzQ">
                                 <field name="ATTR">val</field>
                                 <field name="OID">alexa2.0.History.serialNumber</field>
                               </block>
                             </value>
                             <value name="ADD2">
                               <block type="text" id="v.6VG(Lxwxo.[IIHs$U=">
                                 <field name="TEXT">.Commands.speak</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <next>
                           <block type="variables_set" id="N?jvkadzp3l@_Na$GSh3">
                             <field name="VAR" id="}tfHo!d;DNiy8lns,/nq" variabletype="">speak_volume</field>
                             <value name="VALUE">
                               <block type="text_join" id="2;bG:Tv$~s+Itqhld@ML">
                                 <mutation items="3"></mutation>
                                 <value name="ADD0">
                                   <block type="text" id="U0%on0@O$stDed%wbZLS">
                                     <field name="TEXT">alexa2.0.Echo-Devices.</field>
                                   </block>
                                 </value>
                                 <value name="ADD1">
                                   <block type="get_value" id="F;9-S~mvqb0GUKsf@iKm">
                                     <field name="ATTR">val</field>
                                     <field name="OID">alexa2.0.History.serialNumber</field>
                                   </block>
                                 </value>
                                 <value name="ADD2">
                                   <block type="text" id=".(-6vYavAe:;F~Wr[qy!">
                                     <field name="TEXT">.Commands.speak-volume</field>
                                   </block>
                                 </value>
                               </block>
                             </value>
                             <next>
                               <block type="variables_set" id="XQx[6n!+nUQ];R7;`1$a">
                                 <field name="VAR" id="xn1_(a%|e4G}G4FdbhX:" variabletype="">Ansage</field>
                                 <value name="VALUE">
                                   <block type="text" id="3go3)pi-E4Nt~0H{)8)^">
                                     <field name="TEXT">Ich teste jetzt die Lautstärke mit dem Wert 100. Nach dieser Ansage stellt sich der Wert wieder zurück auf den vorher eingestellten Wert.</field>
                                   </block>
                                 </value>
                                 <next>
                                   <block type="control_ex" id="@.Ynq`]k]!w}k*GMj~[!" inline="true">
                                     <field name="TYPE">false</field>
                                     <field name="CLEAR_RUNNING">FALSE</field>
                                     <value name="OID">
                                       <shadow type="field_oid" id="hb?Q/-%_9A^!+jRfuTnL">
                                         <field name="oid">Object ID</field>
                                       </shadow>
                                       <block type="variables_get" id="(kZn44O^xPC@K:O/D*lO">
                                         <field name="VAR" id="}tfHo!d;DNiy8lns,/nq" variabletype="">speak_volume</field>
                                       </block>
                                     </value>
                                     <value name="VALUE">
                                       <shadow type="logic_boolean" id="Uo[{s0o3{[`(35T92ci2">
                                         <field name="BOOL">TRUE</field>
                                       </shadow>
                                       <block type="variables_get" id="I=Z6pmb=)Mwn25%B:!cu">
                                         <field name="VAR" id="]8CjUu1tTXk^pZvPD9pk" variabletype="">Lautstaerke</field>
                                       </block>
                                     </value>
                                     <value name="DELAY_MS">
                                       <shadow type="math_number" id="6ncG2Nes+=ucX9m]Q-LH">
                                         <field name="NUM">0</field>
                                       </shadow>
                                     </value>
                                     <next>
                                       <block type="control_ex" id="5$O:dbv;*Ncoc7n00s`w" inline="true">
                                         <field name="TYPE">false</field>
                                         <field name="CLEAR_RUNNING">FALSE</field>
                                         <value name="OID">
                                           <shadow type="field_oid" id="hb?Q/-%_9A^!+jRfuTnL">
                                             <field name="oid">Object ID</field>
                                           </shadow>
                                           <block type="variables_get" id="hMVRJeB$V+.jktBW.6DP">
                                             <field name="VAR" id="tx`]izPXI!BeK19V`CX$" variabletype="">angesprochener_echo</field>
                                           </block>
                                         </value>
                                         <value name="VALUE">
                                           <shadow type="logic_boolean" id="Uo[{s0o3{[`(35T92ci2">
                                             <field name="BOOL">TRUE</field>
                                           </shadow>
                                           <block type="variables_get" id="_UExVH`$/=Sjy86Hb$%X">
                                             <field name="VAR" id="xn1_(a%|e4G}G4FdbhX:" variabletype="">Ansage</field>
                                           </block>
                                         </value>
                                         <value name="DELAY_MS">
                                           <shadow type="math_number" id="cLl){TAE+8[,|ov4ALY+">
                                             <field name="NUM">0</field>
                                           </shadow>
                                         </value>
                                       </block>
                                     </next>
                                   </block>
                                 </next>
                               </block>
                             </next>
                           </block>
                         </next>
                       </block>
                     </next>
                   </block>
                 </statement>
               </block>
             </statement>
           </block>
          </xml>
          

          T 1 Reply Last reply Reply Quote 1
          • dslraser
            dslraser Forum Testing Most Active @dslraser last edited by dslraser

            @dslraser
            und hier noch ein Beispiel was Du über ssml so anstellen kannst. (hier werden einige Datenpunkte erstellt)
            Auch hier funktioniert das mit der Lautstärke.

            Auch hier sage mal Testansage zu Alexa.
            (das erste Blockly von oben muß deaktiviert sein. Das habe ich in diesem Export als Beispiel deaktiviert drinn gelassen.)

            <xml xmlns="http://www.w3.org/1999/xhtml">
             <variables>
               <variable type="" id="]8CjUu1tTXk^pZvPD9pk">Lautstaerke</variable>
               <variable type="" id="tx`]izPXI!BeK19V`CX$">angesprochener_echo</variable>
               <variable type="" id="hsYte9@o`T2BDaS,~4hu">alexa_voice</variable>
               <variable type="" id="}tfHo!d;DNiy8lns,/nq">speak_volume</variable>
               <variable type="" id="^$:ikT~4TjYuk|1umMYe">hans_voice</variable>
               <variable type="" id="xn1_(a%|e4G}G4FdbhX:">Ansage</variable>
               <variable type="" id="H/)RG7L1z9=:IM[[N)s]">vicki_voice</variable>
               <variable type="" id=".Ef/-7s*/H3{8G|ut#TF">conchita_voice</variable>
               <variable type="" id="h$;}IKI;/5Nr%M?LEdX]">ssml_ende</variable>
               <variable type="" id=",8hPjyuv!|v-;xyG2[GM">stimmenwechsel_alexa</variable>
               <variable type="" id="1R[1|dIw2YY/SWSjV8vi">stimmenwechsel_hans</variable>
               <variable type="" id="hVUr^m=0SqBl!qr4l}8a">stimmenwechsel_vicki</variable>
               <variable type="" id="5LniT)a9cR_h6Mo!t*1N">stimmenwechsel_conchita</variable>
               <variable type="" id="eHmEd,;db!BBO)-s0Y{Z">fluestern_anfang</variable>
               <variable type="" id="XITSHPBx:4U5JEzlW6ov">fluestern_ende</variable>
               <variable type="" id="g)Ql[6CLA*U1}0AW@%59">Ansage2</variable>
             </variables>
             <block type="procedures_defcustomnoreturn" id="|YOBZy0(J_8~^4VAn@z%" x="37" y="-38">
               <mutation statements="false"></mutation>
               <field name="NAME">Datenpunkte_anlegen</field>
               <field name="SCRIPT">Ly8jIyMjIyMjIyMjIyMjIyMtLS1hdXNrb21tZW50aWVydCBBbmZhbmctLS0jIyMjIyMjIyMjIyMjIyMKLyovLyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0tQWxleGEgRGF0ZW5wdW5rdGUgYW5sZWdlbi0tLSMjIyMjIyMjIyMjIyMjIyMjIyMjCgovLyBEYXRlbnB1bmt0IHVudGVyIDBfdXNlcmRhdGEuMCBlcnN0ZWxsZW4KY29uc3QgZHAwMTAgPSAnQWxleGFfQW5zYWdlbi5TdGltbWVuLjAxQWxleGEnOwpjb25zdCBkdHAwMTAgPSB7dHlwZTogJ2Jvb2xlYW4nLCByZWFkOiB0cnVlLCB3cml0ZTogdHJ1ZSwgbmFtZTogJzAxQWxleGEnLHJvbGU6ICdzd2l0Y2gnLCJzbWFydE5hbWUiOiB7ImRlIjogIkFsZXhhIiwic21hcnRUeXBlIjogIlNXSVRDSCJ9fTsKIApmdW5jdGlvbiBjcmVhdGVEcDAxMChpZCwgY29tbW9uKSB7CiAgICBpZigkKGlkKS5sZW5ndGgpIGxvZygnRGF0ZW5wdW5rdCAnICsgaWQgKyAnIGV4aXN0aWVydCBiZXJlaXRzICEnLCAnd2FybicpOwogICAgZWxzZSB7CiAgICAgICAgdmFyIG9iaiA9IHt9OwogICAgICAgIG9iai50eXBlID0gJ3N0YXRlJzsKICAgICAgICBvYmouY29tbW9uID0gY29tbW9uOwogICAgICAgIG9iai5uYXRpdmUgPSB7fTsKICAgICAgICBzZXRPYmplY3QoaWQsIG9iaiwgZnVuY3Rpb24gKGVycikgewogICAgICAgICAgICBpZiAoZXJyKSBsb2coJ0Nhbm5vdCB3cml0ZSBvYmplY3Q6ICcgKyBlcnIpCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdmFyIGluaXQgPSBudWxsOwogICAgICAgICAgICAgICAgaWYoY29tbW9uLmRlZiA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoY29tbW9uLnR5cGUgPT09ICdudW1iZXInKSBpbml0ID0gMDsKICAgICAgICAgICAgICAgICAgICBpZihjb21tb24udHlwZSA9PT0gJ2Jvb2xlYW4nKSBpbml0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBpZihjb21tb24udHlwZSA9PT0gJ3N0cmluZycpIGluaXQgPSAnbm9jaCBsZWVyJzsKICAgICAgICAgICAgICAgIH0gZWxzZSBpbml0ID0gY29tbW9uLmRlZjsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7c2V0U3RhdGUoaWQsIGluaXQsIHRydWUpO30sMTAwMCk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0KfQpjcmVhdGVEcDAxMCgnMF91c2VyZGF0YS4wLicgKyBkcDAxMCwgZHRwMDEwKTsKCi8vIERhdGVucHVua3QgdW50ZXIgMF91c2VyZGF0YS4wIGVyc3RlbGxlbgpjb25zdCBkcDAxMSA9ICdBbGV4YV9BbnNhZ2VuLlN0aW1tZW4uMDJIYW5zJzsKY29uc3QgZHRwMDExID0ge3R5cGU6ICdib29sZWFuJywgcmVhZDogdHJ1ZSwgd3JpdGU6IHRydWUsIG5hbWU6ICcwMkhhbnMnLHJvbGU6ICdzd2l0Y2gnLCJzbWFydE5hbWUiOiB7ImRlIjogIkhhbnMiLCJzbWFydFR5cGUiOiAiU1dJVENIIn19OwogCmZ1bmN0aW9uIGNyZWF0ZURwMDExKGlkLCBjb21tb24pIHsKICAgIGlmKCQoaWQpLmxlbmd0aCkgbG9nKCdEYXRlbnB1bmt0ICcgKyBpZCArICcgZXhpc3RpZXJ0IGJlcmVpdHMgIScsICd3YXJuJyk7CiAgICBlbHNlIHsKICAgICAgICB2YXIgb2JqID0ge307CiAgICAgICAgb2JqLnR5cGUgPSAnc3RhdGUnOwogICAgICAgIG9iai5jb21tb24gPSBjb21tb247CiAgICAgICAgb2JqLm5hdGl2ZSA9IHt9OwogICAgICAgIHNldE9iamVjdChpZCwgb2JqLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICAgIGlmIChlcnIpIGxvZygnQ2Fubm90IHdyaXRlIG9iamVjdDogJyArIGVycikKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgaW5pdCA9IG51bGw7CiAgICAgICAgICAgICAgICBpZihjb21tb24uZGVmID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICBpZihjb21tb24udHlwZSA9PT0gJ251bWJlcicpIGluaXQgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmKGNvbW1vbi50eXBlID09PSAnYm9vbGVhbicpIGluaXQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBpZihjb21tb24udHlwZSA9PT0gJ3N0cmluZycpIGluaXQgPSAnbm9jaCBsZWVyJzsKICAgICAgICAgICAgICAgIH0gZWxzZSBpbml0ID0gY29tbW9uLmRlZjsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7c2V0U3RhdGUoaWQsIGluaXQsIHRydWUpO30sMTAwMCk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0KfQpjcmVhdGVEcDAxMSgnMF91c2VyZGF0YS4wLicgKyBkcDAxMSwgZHRwMDExKTsKCi8vIERhdGVucHVua3QgdW50ZXIgMF91c2VyZGF0YS4wIGVyc3RlbGxlbgpjb25zdCBkcDAxMiA9ICdBbGV4YV9BbnNhZ2VuLlN0aW1tZW4uMDNWaWNraSc7CmNvbnN0IGR0cDAxMiA9IHt0eXBlOiAnYm9vbGVhbicsIHJlYWQ6IHRydWUsIHdyaXRlOiB0cnVlLCBuYW1lOiAnMDNWaWNraScscm9sZTogJ3N3aXRjaCcsInNtYXJ0TmFtZSI6IHsiZGUiOiAiVmlja2kiLCJzbWFydFR5cGUiOiAiU1dJVENIIn19OwogCmZ1bmN0aW9uIGNyZWF0ZURwMDEyKGlkLCBjb21tb24pIHsKICAgIGlmKCQoaWQpLmxlbmd0aCkgbG9nKCdEYXRlbnB1bmt0ICcgKyBpZCArICcgZXhpc3RpZXJ0IGJlcmVpdHMgIScsICd3YXJuJyk7CiAgICBlbHNlIHsKICAgICAgICB2YXIgb2JqID0ge307CiAgICAgICAgb2JqLnR5cGUgPSAnc3RhdGUnOwogICAgICAgIG9iai5jb21tb24gPSBjb21tb247CiAgICAgICAgb2JqLm5hdGl2ZSA9IHt9OwogICAgICAgIHNldE9iamVjdChpZCwgb2JqLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICAgIGlmIChlcnIpIGxvZygnQ2Fubm90IHdyaXRlIG9iamVjdDogJyArIGVycikKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgaW5pdCA9IG51bGw7CiAgICAgICAgICAgICAgICBpZihjb21tb24uZGVmID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICBpZihjb21tb24udHlwZSA9PT0gJ251bWJlcicpIGluaXQgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmKGNvbW1vbi50eXBlID09PSAnYm9vbGVhbicpIGluaXQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBpZihjb21tb24udHlwZSA9PT0gJ3N0cmluZycpIGluaXQgPSAnbm9jaCBsZWVyJzsKICAgICAgICAgICAgICAgIH0gZWxzZSBpbml0ID0gY29tbW9uLmRlZjsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7c2V0U3RhdGUoaWQsIGluaXQsIHRydWUpO30sMTAwMCk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0KfQpjcmVhdGVEcDAxMignMF91c2VyZGF0YS4wLicgKyBkcDAxMiwgZHRwMDEyKTsKCi8vIERhdGVucHVua3QgdW50ZXIgMF91c2VyZGF0YS4wIGVyc3RlbGxlbgpjb25zdCBkcDAxMyA9ICdBbGV4YV9BbnNhZ2VuLlN0aW1tZW4uMDRDb25jaGl0YSc7CmNvbnN0IGR0cDAxMyA9IHt0eXBlOiAnYm9vbGVhbicsIHJlYWQ6IHRydWUsIHdyaXRlOiB0cnVlLCBuYW1lOiAnMDRDb25jaGl0YScscm9sZTogJ3N3aXRjaCcsInNtYXJ0TmFtZSI6IHsiZGUiOiAiQ29uY2hpdGEiLCJzbWFydFR5cGUiOiAiU1dJVENIIn19OwogCmZ1bmN0aW9uIGNyZWF0ZURwMDEzKGlkLCBjb21tb24pIHsKICAgIGlmKCQoaWQpLmxlbmd0aCkgbG9nKCdEYXRlbnB1bmt0ICcgKyBpZCArICcgZXhpc3RpZXJ0IGJlcmVpdHMgIScsICd3YXJuJyk7CiAgICBlbHNlIHsKICAgICAgICB2YXIgb2JqID0ge307CiAgICAgICAgb2JqLnR5cGUgPSAnc3RhdGUnOwogICAgICAgIG9iai5jb21tb24gPSBjb21tb247CiAgICAgICAgb2JqLm5hdGl2ZSA9IHt9OwogICAgICAgIHNldE9iamVjdChpZCwgb2JqLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICAgIGlmIChlcnIpIGxvZygnQ2Fubm90IHdyaXRlIG9iamVjdDogJyArIGVycikKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgaW5pdCA9IG51bGw7CiAgICAgICAgICAgICAgICBpZihjb21tb24uZGVmID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICBpZihjb21tb24udHlwZSA9PT0gJ251bWJlcicpIGluaXQgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmKGNvbW1vbi50eXBlID09PSAnYm9vbGVhbicpIGluaXQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBpZihjb21tb24udHlwZSA9PT0gJ3N0cmluZycpIGluaXQgPSAnbm9jaCBsZWVyJzsKICAgICAgICAgICAgICAgIH0gZWxzZSBpbml0ID0gY29tbW9uLmRlZjsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7c2V0U3RhdGUoaWQsIGluaXQsIHRydWUpO30sMTAwMCk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0KfQpjcmVhdGVEcDAxMygnMF91c2VyZGF0YS4wLicgKyBkcDAxMywgZHRwMDEzKTsqLy8vIyMjIyMjIyMjIyMjIyMjLS0tYXVza29tbWVudGllcnQgRW5kZS0tLSMjIyMjIyMjIyMjIyMjIwoKLy8gRGF0ZW5wdW5rdCB1bnRlciAwX3VzZXJkYXRhLjAgZXJzdGVsbGVuCmNvbnN0IGRwMDE0ID0gJ0FsZXhhX0Fuc2FnZW4uU3RpbW1lbi4wNUFsZXhhX3NzbWwnOwpjb25zdCBkdHAwMTQgPSB7dHlwZTogJ3N0cmluZycsIHJlYWQ6IHRydWUsIHdyaXRlOiBmYWxzZSwgbmFtZTogJzA1QWxleGFfc3NtbCcscm9sZTogJ3N0cmluZyd9OwogCmZ1bmN0aW9uIGNyZWF0ZURwMDE0KGlkLCBjb21tb24pIHsKICAgIGlmKCQoaWQpLmxlbmd0aCkgbG9nKCdEYXRlbnB1bmt0ICcgKyBpZCArICcgZXhpc3RpZXJ0IGJlcmVpdHMgIScsICd3YXJuJyk7CiAgICBlbHNlIHsKICAgICAgICB2YXIgb2JqID0ge307CiAgICAgICAgb2JqLnR5cGUgPSAnc3RhdGUnOwogICAgICAgIG9iai5jb21tb24gPSBjb21tb247CiAgICAgICAgc2V0T2JqZWN0KGlkLCBvYmosIGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgICAgaWYgKGVycikgbG9nKCdDYW5ub3Qgd3JpdGUgb2JqZWN0OiAnICsgZXJyKQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBpbml0ID0gbnVsbDsKICAgICAgICAgICAgICAgIGlmKGNvbW1vbi5kZWYgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIGlmKGNvbW1vbi50eXBlID09PSAnbnVtYmVyJykgaW5pdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYoY29tbW9uLnR5cGUgPT09ICdib29sZWFuJykgaW5pdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGlmKGNvbW1vbi50eXBlID09PSAnc3RyaW5nJykgaW5pdCA9ICc8c3BlYWs+PHZvaWNlIG5hbWU9IkFsZXhhIj4nOwogICAgICAgICAgICAgICAgfSBlbHNlIGluaXQgPSBjb21tb24uZGVmOwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtzZXRTdGF0ZShpZCwgaW5pdCwgdHJ1ZSk7fSwxMDAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQp9CmNyZWF0ZURwMDE0KCcwX3VzZXJkYXRhLjAuJyArIGRwMDE0LCBkdHAwMTQpOwoKLy8gRGF0ZW5wdW5rdCB1bnRlciAwX3VzZXJkYXRhLjAgZXJzdGVsbGVuCmNvbnN0IGRwMDE1ID0gJ0FsZXhhX0Fuc2FnZW4uU3RpbW1lbi4wNkhhbnNfc3NtbCc7CmNvbnN0IGR0cDAxNSA9IHt0eXBlOiAnc3RyaW5nJywgcmVhZDogdHJ1ZSwgd3JpdGU6IGZhbHNlLCBuYW1lOiAnMDZIYW5zX3NzbWwnLHJvbGU6ICdzdHJpbmcnfTsKIApmdW5jdGlvbiBjcmVhdGVEcDAxNShpZCwgY29tbW9uKSB7CiAgICBpZigkKGlkKS5sZW5ndGgpIGxvZygnRGF0ZW5wdW5rdCAnICsgaWQgKyAnIGV4aXN0aWVydCBiZXJlaXRzICEnLCAnd2FybicpOwogICAgZWxzZSB7CiAgICAgICAgdmFyIG9iaiA9IHt9OwogICAgICAgIG9iai50eXBlID0gJ3N0YXRlJzsKICAgICAgICBvYmouY29tbW9uID0gY29tbW9uOwogICAgICAgIHNldE9iamVjdChpZCwgb2JqLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICAgIGlmIChlcnIpIGxvZygnQ2Fubm90IHdyaXRlIG9iamVjdDogJyArIGVycikKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgaW5pdCA9IG51bGw7CiAgICAgICAgICAgICAgICBpZihjb21tb24uZGVmID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICBpZihjb21tb24udHlwZSA9PT0gJ251bWJlcicpIGluaXQgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmKGNvbW1vbi50eXBlID09PSAnYm9vbGVhbicpIGluaXQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBpZihjb21tb24udHlwZSA9PT0gJ3N0cmluZycpIGluaXQgPSAnPHNwZWFrPjx2b2ljZSBuYW1lPSJIYW5zIj4nOwogICAgICAgICAgICAgICAgfSBlbHNlIGluaXQgPSBjb21tb24uZGVmOwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtzZXRTdGF0ZShpZCwgaW5pdCwgdHJ1ZSk7fSwxMDAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQp9CmNyZWF0ZURwMDE1KCcwX3VzZXJkYXRhLjAuJyArIGRwMDE1LCBkdHAwMTUpOwoKLy8gRGF0ZW5wdW5rdCB1bnRlciAwX3VzZXJkYXRhLjAgZXJzdGVsbGVuCmNvbnN0IGRwMDE2ID0gJ0FsZXhhX0Fuc2FnZW4uU3RpbW1lbi4wN1ZpY2tpX3NzbWwnOwpjb25zdCBkdHAwMTYgPSB7dHlwZTogJ3N0cmluZycsIHJlYWQ6IHRydWUsIHdyaXRlOiBmYWxzZSwgbmFtZTogJzA3Vmlja2lfc3NtbCcscm9sZTogJ3N0cmluZyd9OwogCmZ1bmN0aW9uIGNyZWF0ZURwMDE2KGlkLCBjb21tb24pIHsKICAgIGlmKCQoaWQpLmxlbmd0aCkgbG9nKCdEYXRlbnB1bmt0ICcgKyBpZCArICcgZXhpc3RpZXJ0IGJlcmVpdHMgIScsICd3YXJuJyk7CiAgICBlbHNlIHsKICAgICAgICB2YXIgb2JqID0ge307CiAgICAgICAgb2JqLnR5cGUgPSAnc3RhdGUnOwogICAgICAgIG9iai5jb21tb24gPSBjb21tb247CiAgICAgICAgc2V0T2JqZWN0KGlkLCBvYmosIGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgICAgaWYgKGVycikgbG9nKCdDYW5ub3Qgd3JpdGUgb2JqZWN0OiAnICsgZXJyKQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBpbml0ID0gbnVsbDsKICAgICAgICAgICAgICAgIGlmKGNvbW1vbi5kZWYgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIGlmKGNvbW1vbi50eXBlID09PSAnbnVtYmVyJykgaW5pdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYoY29tbW9uLnR5cGUgPT09ICdib29sZWFuJykgaW5pdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGlmKGNvbW1vbi50eXBlID09PSAnc3RyaW5nJykgaW5pdCA9ICc8c3BlYWs+PHZvaWNlIG5hbWU9IlZpY2tpIj4nOwogICAgICAgICAgICAgICAgfSBlbHNlIGluaXQgPSBjb21tb24uZGVmOwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtzZXRTdGF0ZShpZCwgaW5pdCwgdHJ1ZSk7fSwxMDAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQp9CmNyZWF0ZURwMDE2KCcwX3VzZXJkYXRhLjAuJyArIGRwMDE2LCBkdHAwMTYpOwoKLy8gRGF0ZW5wdW5rdCB1bnRlciAwX3VzZXJkYXRhLjAgZXJzdGVsbGVuCmNvbnN0IGRwMDE3ID0gJ0FsZXhhX0Fuc2FnZW4uU3RpbW1lbi4wOENvbmNoaXRhX3NzbWwnOwpjb25zdCBkdHAwMTcgPSB7dHlwZTogJ3N0cmluZycsIHJlYWQ6IHRydWUsIHdyaXRlOiBmYWxzZSwgbmFtZTogJzA4Q29uY2hpdGFfc3NtbCcscm9sZTogJ3N0cmluZyd9OwogCmZ1bmN0aW9uIGNyZWF0ZURwMDE3KGlkLCBjb21tb24pIHsKICAgIGlmKCQoaWQpLmxlbmd0aCkgbG9nKCdEYXRlbnB1bmt0ICcgKyBpZCArICcgZXhpc3RpZXJ0IGJlcmVpdHMgIScsICd3YXJuJyk7CiAgICBlbHNlIHsKICAgICAgICB2YXIgb2JqID0ge307CiAgICAgICAgb2JqLnR5cGUgPSAnc3RhdGUnOwogICAgICAgIG9iai5jb21tb24gPSBjb21tb247CiAgICAgICAgc2V0T2JqZWN0KGlkLCBvYmosIGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgICAgaWYgKGVycikgbG9nKCdDYW5ub3Qgd3JpdGUgb2JqZWN0OiAnICsgZXJyKQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBpbml0ID0gbnVsbDsKICAgICAgICAgICAgICAgIGlmKGNvbW1vbi5kZWYgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIGlmKGNvbW1vbi50eXBlID09PSAnbnVtYmVyJykgaW5pdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYoY29tbW9uLnR5cGUgPT09ICdib29sZWFuJykgaW5pdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGlmKGNvbW1vbi50eXBlID09PSAnc3RyaW5nJykgaW5pdCA9ICc8c3BlYWs+PHZvaWNlIG5hbWU9IkNvbmNoaXRhIj4nOwogICAgICAgICAgICAgICAgfSBlbHNlIGluaXQgPSBjb21tb24uZGVmOwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtzZXRTdGF0ZShpZCwgaW5pdCwgdHJ1ZSk7fSwxMDAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQp9CmNyZWF0ZURwMDE3KCcwX3VzZXJkYXRhLjAuJyArIGRwMDE3LCBkdHAwMTcpOwoKLy8gRGF0ZW5wdW5rdCB1bnRlciAwX3VzZXJkYXRhLjAgZXJzdGVsbGVuCmNvbnN0IGRwMDE4ID0gJ0FsZXhhX0Fuc2FnZW4uU3RpbW1lbi4wOXNzbWxfZW5kZSc7CmNvbnN0IGR0cDAxOCA9IHt0eXBlOiAnc3RyaW5nJywgcmVhZDogdHJ1ZSwgd3JpdGU6IGZhbHNlLCBuYW1lOiAnMDlzc21sX2VuZGUnLHJvbGU6ICdzdHJpbmcnfTsKIApmdW5jdGlvbiBjcmVhdGVEcDAxOChpZCwgY29tbW9uKSB7CiAgICBpZigkKGlkKS5sZW5ndGgpIGxvZygnRGF0ZW5wdW5rdCAnICsgaWQgKyAnIGV4aXN0aWVydCBiZXJlaXRzICEnLCAnd2FybicpOwogICAgZWxzZSB7CiAgICAgICAgdmFyIG9iaiA9IHt9OwogICAgICAgIG9iai50eXBlID0gJ3N0YXRlJzsKICAgICAgICBvYmouY29tbW9uID0gY29tbW9uOwogICAgICAgIHNldE9iamVjdChpZCwgb2JqLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICAgIGlmIChlcnIpIGxvZygnQ2Fubm90IHdyaXRlIG9iamVjdDogJyArIGVycikKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgaW5pdCA9IG51bGw7CiAgICAgICAgICAgICAgICBpZihjb21tb24uZGVmID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICBpZihjb21tb24udHlwZSA9PT0gJ251bWJlcicpIGluaXQgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmKGNvbW1vbi50eXBlID09PSAnYm9vbGVhbicpIGluaXQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBpZihjb21tb24udHlwZSA9PT0gJ3N0cmluZycpIGluaXQgPSAnPC92b2ljZT48L3NwZWFrPic7CiAgICAgICAgICAgICAgICB9IGVsc2UgaW5pdCA9IGNvbW1vbi5kZWY7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3NldFN0YXRlKGlkLCBpbml0LCB0cnVlKTt9LDEwMDApOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9Cn0KY3JlYXRlRHAwMTgoJzBfdXNlcmRhdGEuMC4nICsgZHAwMTgsIGR0cDAxOCk7CgovLyBEYXRlbnB1bmt0IHVudGVyIDBfdXNlcmRhdGEuMCBlcnN0ZWxsZW4KY29uc3QgZHAwMTkgPSAnQWxleGFfQW5zYWdlbi5TdGltbWVuLjEwQWxleGFfU3RpbW1lbndlY2hzZWxfc3NtbCc7CmNvbnN0IGR0cDAxOSA9IHt0eXBlOiAnc3RyaW5nJywgcmVhZDogdHJ1ZSwgd3JpdGU6IGZhbHNlLCBuYW1lOiAnMTBBbGV4YV9TdGltbWVud2VjaHNlbF9zc21sJyxyb2xlOiAnc3RyaW5nJ307CiAKZnVuY3Rpb24gY3JlYXRlRHAwMTkoaWQsIGNvbW1vbikgewogICAgaWYoJChpZCkubGVuZ3RoKSBsb2coJ0RhdGVucHVua3QgJyArIGlkICsgJyBleGlzdGllcnQgYmVyZWl0cyAhJywgJ3dhcm4nKTsKICAgIGVsc2UgewogICAgICAgIHZhciBvYmogPSB7fTsKICAgICAgICBvYmoudHlwZSA9ICdzdGF0ZSc7CiAgICAgICAgb2JqLmNvbW1vbiA9IGNvbW1vbjsKICAgICAgICBzZXRPYmplY3QoaWQsIG9iaiwgZnVuY3Rpb24gKGVycikgewogICAgICAgICAgICBpZiAoZXJyKSBsb2coJ0Nhbm5vdCB3cml0ZSBvYmplY3Q6ICcgKyBlcnIpCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdmFyIGluaXQgPSBudWxsOwogICAgICAgICAgICAgICAgaWYoY29tbW9uLmRlZiA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoY29tbW9uLnR5cGUgPT09ICdudW1iZXInKSBpbml0ID0gMDsKICAgICAgICAgICAgICAgICAgICBpZihjb21tb24udHlwZSA9PT0gJ2Jvb2xlYW4nKSBpbml0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgaWYoY29tbW9uLnR5cGUgPT09ICdzdHJpbmcnKSBpbml0ID0gJzwvdm9pY2U+PHZvaWNlIG5hbWU9IkFsZXhhIj4nOwogICAgICAgICAgICAgICAgfSBlbHNlIGluaXQgPSBjb21tb24uZGVmOwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtzZXRTdGF0ZShpZCwgaW5pdCwgdHJ1ZSk7fSwxMDAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQp9CmNyZWF0ZURwMDE5KCcwX3VzZXJkYXRhLjAuJyArIGRwMDE5LCBkdHAwMTkpOwoKY29uc3QgZHAwMjAgPSAnQWxleGFfQW5zYWdlbi5TdGltbWVuLjExSGFuc19TdGltbWVud2VjaHNlbF9zc21sJzsKY29uc3QgZHRwMDIwID0ge3R5cGU6ICdzdHJpbmcnLCByZWFkOiB0cnVlLCB3cml0ZTogZmFsc2UsIG5hbWU6ICcxMUhhbnNfU3RpbW1lbndlY2hzZWxfc3NtbCcscm9sZTogJ3N0cmluZyd9OwogCmZ1bmN0aW9uIGNyZWF0ZURwMDIwKGlkLCBjb21tb24pIHsKICAgIGlmKCQoaWQpLmxlbmd0aCkgbG9nKCdEYXRlbnB1bmt0ICcgKyBpZCArICcgZXhpc3RpZXJ0IGJlcmVpdHMgIScsICd3YXJuJyk7CiAgICBlbHNlIHsKICAgICAgICB2YXIgb2JqID0ge307CiAgICAgICAgb2JqLnR5cGUgPSAnc3RhdGUnOwogICAgICAgIG9iai5jb21tb24gPSBjb21tb247CiAgICAgICAgc2V0T2JqZWN0KGlkLCBvYmosIGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgICAgaWYgKGVycikgbG9nKCdDYW5ub3Qgd3JpdGUgb2JqZWN0OiAnICsgZXJyKQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBpbml0ID0gbnVsbDsKICAgICAgICAgICAgICAgIGlmKGNvbW1vbi5kZWYgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIGlmKGNvbW1vbi50eXBlID09PSAnbnVtYmVyJykgaW5pdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYoY29tbW9uLnR5cGUgPT09ICdib29sZWFuJykgaW5pdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGlmKGNvbW1vbi50eXBlID09PSAnc3RyaW5nJykgaW5pdCA9ICc8L3ZvaWNlPjx2b2ljZSBuYW1lPSJIYW5zIj4nOwogICAgICAgICAgICAgICAgfSBlbHNlIGluaXQgPSBjb21tb24uZGVmOwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtzZXRTdGF0ZShpZCwgaW5pdCwgdHJ1ZSk7fSwxMDAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQp9CmNyZWF0ZURwMDIwKCcwX3VzZXJkYXRhLjAuJyArIGRwMDIwLCBkdHAwMjApOwoKY29uc3QgZHAwMjEgPSAnQWxleGFfQW5zYWdlbi5TdGltbWVuLjEyVmlja2lfU3RpbW1lbndlY2hzZWxfc3NtbCc7CmNvbnN0IGR0cDAyMSA9IHt0eXBlOiAnc3RyaW5nJywgcmVhZDogdHJ1ZSwgd3JpdGU6IGZhbHNlLCBuYW1lOiAnMTJWaWNraV9TdGltbWVud2VjaHNlbF9zc21sJyxyb2xlOiAnc3RyaW5nJ307CiAKZnVuY3Rpb24gY3JlYXRlRHAwMjEoaWQsIGNvbW1vbikgewogICAgaWYoJChpZCkubGVuZ3RoKSBsb2coJ0RhdGVucHVua3QgJyArIGlkICsgJyBleGlzdGllcnQgYmVyZWl0cyAhJywgJ3dhcm4nKTsKICAgIGVsc2UgewogICAgICAgIHZhciBvYmogPSB7fTsKICAgICAgICBvYmoudHlwZSA9ICdzdGF0ZSc7CiAgICAgICAgb2JqLmNvbW1vbiA9IGNvbW1vbjsKICAgICAgICBzZXRPYmplY3QoaWQsIG9iaiwgZnVuY3Rpb24gKGVycikgewogICAgICAgICAgICBpZiAoZXJyKSBsb2coJ0Nhbm5vdCB3cml0ZSBvYmplY3Q6ICcgKyBlcnIpCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdmFyIGluaXQgPSBudWxsOwogICAgICAgICAgICAgICAgaWYoY29tbW9uLmRlZiA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoY29tbW9uLnR5cGUgPT09ICdudW1iZXInKSBpbml0ID0gMDsKICAgICAgICAgICAgICAgICAgICBpZihjb21tb24udHlwZSA9PT0gJ2Jvb2xlYW4nKSBpbml0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgaWYoY29tbW9uLnR5cGUgPT09ICdzdHJpbmcnKSBpbml0ID0gJzwvdm9pY2U+PHZvaWNlIG5hbWU9IlZpY2tpIj4nOwogICAgICAgICAgICAgICAgfSBlbHNlIGluaXQgPSBjb21tb24uZGVmOwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtzZXRTdGF0ZShpZCwgaW5pdCwgdHJ1ZSk7fSwxMDAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQp9CmNyZWF0ZURwMDIxKCcwX3VzZXJkYXRhLjAuJyArIGRwMDIxLCBkdHAwMjEpOwoKY29uc3QgZHAwMjIgPSAnQWxleGFfQW5zYWdlbi5TdGltbWVuLjEzQ29uY2hpdGFfU3RpbW1lbndlY2hzZWxfc3NtbCc7CmNvbnN0IGR0cDAyMiA9IHt0eXBlOiAnc3RyaW5nJywgcmVhZDogdHJ1ZSwgd3JpdGU6IGZhbHNlLCBuYW1lOiAnMTNDb25jaGl0YV9TdGltbWVud2VjaHNlbF9zc21sJyxyb2xlOiAnc3RyaW5nJ307CiAKZnVuY3Rpb24gY3JlYXRlRHAwMjIoaWQsIGNvbW1vbikgewogICAgaWYoJChpZCkubGVuZ3RoKSBsb2coJ0RhdGVucHVua3QgJyArIGlkICsgJyBleGlzdGllcnQgYmVyZWl0cyAhJywgJ3dhcm4nKTsKICAgIGVsc2UgewogICAgICAgIHZhciBvYmogPSB7fTsKICAgICAgICBvYmoudHlwZSA9ICdzdGF0ZSc7CiAgICAgICAgb2JqLmNvbW1vbiA9IGNvbW1vbjsKICAgICAgICBzZXRPYmplY3QoaWQsIG9iaiwgZnVuY3Rpb24gKGVycikgewogICAgICAgICAgICBpZiAoZXJyKSBsb2coJ0Nhbm5vdCB3cml0ZSBvYmplY3Q6ICcgKyBlcnIpCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdmFyIGluaXQgPSBudWxsOwogICAgICAgICAgICAgICAgaWYoY29tbW9uLmRlZiA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoY29tbW9uLnR5cGUgPT09ICdudW1iZXInKSBpbml0ID0gMDsKICAgICAgICAgICAgICAgICAgICBpZihjb21tb24udHlwZSA9PT0gJ2Jvb2xlYW4nKSBpbml0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgaWYoY29tbW9uLnR5cGUgPT09ICdzdHJpbmcnKSBpbml0ID0gJzwvdm9pY2U+PHZvaWNlIG5hbWU9IkNvbmNoaXRhIj4nOwogICAgICAgICAgICAgICAgfSBlbHNlIGluaXQgPSBjb21tb24uZGVmOwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtzZXRTdGF0ZShpZCwgaW5pdCwgdHJ1ZSk7fSwxMDAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQp9CmNyZWF0ZURwMDIyKCcwX3VzZXJkYXRhLjAuJyArIGRwMDIyLCBkdHAwMjIpOwoKY29uc3QgZHAwMjMgPSAnQWxleGFfQW5zYWdlbi5TdGltbWVuLjE0Zmx1ZXN0ZXJuX2FuZmFuZyc7CmNvbnN0IGR0cDAyMyA9IHt0eXBlOiAnc3RyaW5nJywgcmVhZDogdHJ1ZSwgd3JpdGU6IGZhbHNlLCBuYW1lOiAnMTRmbHVlc3Rlcm5fYW5mYW5nJyxyb2xlOiAnc3RyaW5nJ307CiAKZnVuY3Rpb24gY3JlYXRlRHAwMjMoaWQsIGNvbW1vbikgewogICAgaWYoJChpZCkubGVuZ3RoKSBsb2coJ0RhdGVucHVua3QgJyArIGlkICsgJyBleGlzdGllcnQgYmVyZWl0cyAhJywgJ3dhcm4nKTsKICAgIGVsc2UgewogICAgICAgIHZhciBvYmogPSB7fTsKICAgICAgICBvYmoudHlwZSA9ICdzdGF0ZSc7CiAgICAgICAgb2JqLmNvbW1vbiA9IGNvbW1vbjsKICAgICAgICBzZXRPYmplY3QoaWQsIG9iaiwgZnVuY3Rpb24gKGVycikgewogICAgICAgICAgICBpZiAoZXJyKSBsb2coJ0Nhbm5vdCB3cml0ZSBvYmplY3Q6ICcgKyBlcnIpCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdmFyIGluaXQgPSBudWxsOwogICAgICAgICAgICAgICAgaWYoY29tbW9uLmRlZiA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoY29tbW9uLnR5cGUgPT09ICdudW1iZXInKSBpbml0ID0gMDsKICAgICAgICAgICAgICAgICAgICBpZihjb21tb24udHlwZSA9PT0gJ2Jvb2xlYW4nKSBpbml0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgaWYoY29tbW9uLnR5cGUgPT09ICdzdHJpbmcnKSBpbml0ID0gJzxzcGVhaz48YW1hem9uOmVmZmVjdCBuYW1lPSJ3aGlzcGVyZWQiPic7CiAgICAgICAgICAgICAgICB9IGVsc2UgaW5pdCA9IGNvbW1vbi5kZWY7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3NldFN0YXRlKGlkLCBpbml0LCB0cnVlKTt9LDEwMDApOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9Cn0KY3JlYXRlRHAwMjMoJzBfdXNlcmRhdGEuMC4nICsgZHAwMjMsIGR0cDAyMyk7Cgpjb25zdCBkcDAyNCA9ICdBbGV4YV9BbnNhZ2VuLlN0aW1tZW4uMTVmbHVlc3Rlcm5fZW5kZSc7CmNvbnN0IGR0cDAyNCA9IHt0eXBlOiAnc3RyaW5nJywgcmVhZDogdHJ1ZSwgd3JpdGU6IGZhbHNlLCBuYW1lOiAnMTVmbHVlc3Rlcm5fZW5kZScscm9sZTogJ3N0cmluZyd9OwogCmZ1bmN0aW9uIGNyZWF0ZURwMDI0KGlkLCBjb21tb24pIHsKICAgIGlmKCQoaWQpLmxlbmd0aCkgbG9nKCdEYXRlbnB1bmt0ICcgKyBpZCArICcgZXhpc3RpZXJ0IGJlcmVpdHMgIScsICd3YXJuJyk7CiAgICBlbHNlIHsKICAgICAgICB2YXIgb2JqID0ge307CiAgICAgICAgb2JqLnR5cGUgPSAnc3RhdGUnOwogICAgICAgIG9iai5jb21tb24gPSBjb21tb247CiAgICAgICAgc2V0T2JqZWN0KGlkLCBvYmosIGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgICAgaWYgKGVycikgbG9nKCdDYW5ub3Qgd3JpdGUgb2JqZWN0OiAnICsgZXJyKQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBpbml0ID0gbnVsbDsKICAgICAgICAgICAgICAgIGlmKGNvbW1vbi5kZWYgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIGlmKGNvbW1vbi50eXBlID09PSAnbnVtYmVyJykgaW5pdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYoY29tbW9uLnR5cGUgPT09ICdib29sZWFuJykgaW5pdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGlmKGNvbW1vbi50eXBlID09PSAnc3RyaW5nJykgaW5pdCA9ICc8L2FtYXpvbjplZmZlY3Q+PC9zcGVhaz4nOwogICAgICAgICAgICAgICAgfSBlbHNlIGluaXQgPSBjb21tb24uZGVmOwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtzZXRTdGF0ZShpZCwgaW5pdCwgdHJ1ZSk7fSwxMDAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQp9CmNyZWF0ZURwMDI0KCcwX3VzZXJkYXRhLjAuJyArIGRwMDI0LCBkdHAwMjQpOw==</field>
               <comment pinned="false" h="80" w="160">legt Datenpunkte für den die Anzahl gekippter/geöffneter/geschlossenen/gesamt Fenster an</comment>
             </block>
             <block type="procedures_callcustomnoreturn" id="WUz)!$4SU(=C^dK+WDIy" disabled="true" x="37" y="13">
               <mutation name="Datenpunkte_anlegen"></mutation>
               <next>
                 <block type="comment" id="TCbirY0yNy87D,/?|k1h">
                   <field name="COMMENT">speak</field>
                   <next>
                     <block type="on" id="pPAe?D9#C-MzNdYWPK]r" collapsed="true" disabled="true">
                       <field name="OID">alexa2.0.History.summary</field>
                       <field name="CONDITION">any</field>
                       <field name="ACK_CONDITION"></field>
                       <statement name="STATEMENT">
                         <block type="controls_if" id="fQlWBQZN^e.:DrM[^7{4">
                           <value name="IF0">
                             <block type="logic_compare" id="2pJO@[Vtpx6B{6|hU{AM">
                               <field name="OP">EQ</field>
                               <value name="A">
                                 <block type="get_value" id="DyA~MCr`D%W17,P!,xZs">
                                   <field name="ATTR">val</field>
                                   <field name="OID">alexa2.0.History.summary</field>
                                 </block>
                               </value>
                               <value name="B">
                                 <block type="text" id="%4nBc3D)J=jtRdxt$XgL">
                                   <field name="TEXT">testansage</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                           <statement name="DO0">
                             <block type="variables_set" id=".}l{$)R}!so3?49}ZI29">
                               <field name="VAR" id="]8CjUu1tTXk^pZvPD9pk" variabletype="">Lautstaerke</field>
                               <value name="VALUE">
                                 <block type="math_number" id="w!aFM4SyFphGj^,/nlyu">
                                   <field name="NUM">100</field>
                                 </block>
                               </value>
                               <next>
                                 <block type="variables_set" id="raHp)T;G6o1nDaQZ5Qrg">
                                   <field name="VAR" id="tx`]izPXI!BeK19V`CX$" variabletype="">angesprochener_echo</field>
                                   <value name="VALUE">
                                     <block type="text_join" id="q`1!?SO4KN9hG:/?YC1L">
                                       <mutation items="3"></mutation>
                                       <value name="ADD0">
                                         <block type="text" id="lG5cq|_e-SYygMARlNe%">
                                           <field name="TEXT">alexa2.0.Echo-Devices.</field>
                                         </block>
                                       </value>
                                       <value name="ADD1">
                                         <block type="get_value" id="M7plEDg{8pq2=J9a2fzQ">
                                           <field name="ATTR">val</field>
                                           <field name="OID">alexa2.0.History.serialNumber</field>
                                         </block>
                                       </value>
                                       <value name="ADD2">
                                         <block type="text" id="v.6VG(Lxwxo.[IIHs$U=">
                                           <field name="TEXT">.Commands.speak</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="variables_set" id="N?jvkadzp3l@_Na$GSh3">
                                       <field name="VAR" id="}tfHo!d;DNiy8lns,/nq" variabletype="">speak_volume</field>
                                       <value name="VALUE">
                                         <block type="text_join" id="2;bG:Tv$~s+Itqhld@ML">
                                           <mutation items="3"></mutation>
                                           <value name="ADD0">
                                             <block type="text" id="U0%on0@O$stDed%wbZLS">
                                               <field name="TEXT">alexa2.0.Echo-Devices.</field>
                                             </block>
                                           </value>
                                           <value name="ADD1">
                                             <block type="get_value" id="F;9-S~mvqb0GUKsf@iKm">
                                               <field name="ATTR">val</field>
                                               <field name="OID">alexa2.0.History.serialNumber</field>
                                             </block>
                                           </value>
                                           <value name="ADD2">
                                             <block type="text" id=".(-6vYavAe:;F~Wr[qy!">
                                               <field name="TEXT">.Commands.speak-volume</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                       <next>
                                         <block type="variables_set" id="XQx[6n!+nUQ];R7;`1$a">
                                           <field name="VAR" id="xn1_(a%|e4G}G4FdbhX:" variabletype="">Ansage</field>
                                           <value name="VALUE">
                                             <block type="text" id="3go3)pi-E4Nt~0H{)8)^">
                                               <field name="TEXT">Ich teste jetzt die Lautstärke mit dem Wert 100. Nach dieser Ansage stellt sich der Wert wieder zurück auf den vorher eingestellten Wert.</field>
                                             </block>
                                           </value>
                                           <next>
                                             <block type="control_ex" id="@.Ynq`]k]!w}k*GMj~[!" inline="true">
                                               <field name="TYPE">false</field>
                                               <field name="CLEAR_RUNNING">FALSE</field>
                                               <value name="OID">
                                                 <shadow type="field_oid" id="hb?Q/-%_9A^!+jRfuTnL">
                                                   <field name="oid">Object ID</field>
                                                 </shadow>
                                                 <block type="variables_get" id="(kZn44O^xPC@K:O/D*lO">
                                                   <field name="VAR" id="}tfHo!d;DNiy8lns,/nq" variabletype="">speak_volume</field>
                                                 </block>
                                               </value>
                                               <value name="VALUE">
                                                 <shadow type="logic_boolean" id="Uo[{s0o3{[`(35T92ci2">
                                                   <field name="BOOL">TRUE</field>
                                                 </shadow>
                                                 <block type="variables_get" id="I=Z6pmb=)Mwn25%B:!cu">
                                                   <field name="VAR" id="]8CjUu1tTXk^pZvPD9pk" variabletype="">Lautstaerke</field>
                                                 </block>
                                               </value>
                                               <value name="DELAY_MS">
                                                 <shadow type="math_number" id="6ncG2Nes+=ucX9m]Q-LH">
                                                   <field name="NUM">0</field>
                                                 </shadow>
                                               </value>
                                               <next>
                                                 <block type="control_ex" id="5$O:dbv;*Ncoc7n00s`w" inline="true">
                                                   <field name="TYPE">false</field>
                                                   <field name="CLEAR_RUNNING">FALSE</field>
                                                   <value name="OID">
                                                     <shadow type="field_oid" id="hb?Q/-%_9A^!+jRfuTnL">
                                                       <field name="oid">Object ID</field>
                                                     </shadow>
                                                     <block type="variables_get" id="hMVRJeB$V+.jktBW.6DP">
                                                       <field name="VAR" id="tx`]izPXI!BeK19V`CX$" variabletype="">angesprochener_echo</field>
                                                     </block>
                                                   </value>
                                                   <value name="VALUE">
                                                     <shadow type="logic_boolean" id="Uo[{s0o3{[`(35T92ci2">
                                                       <field name="BOOL">TRUE</field>
                                                     </shadow>
                                                     <block type="variables_get" id="_UExVH`$/=Sjy86Hb$%X">
                                                       <field name="VAR" id="xn1_(a%|e4G}G4FdbhX:" variabletype="">Ansage</field>
                                                     </block>
                                                   </value>
                                                   <value name="DELAY_MS">
                                                     <shadow type="math_number" id="cLl){TAE+8[,|ov4ALY+">
                                                       <field name="NUM">0</field>
                                                     </shadow>
                                                   </value>
                                                 </block>
                                               </next>
                                             </block>
                                           </next>
                                         </block>
                                       </next>
                                     </block>
                                   </next>
                                 </block>
                               </next>
                             </block>
                           </statement>
                         </block>
                       </statement>
                       <next>
                         <block type="comment" id="=x.*TbJbsJR4!qztr5}(">
                           <field name="COMMENT">ssml</field>
                           <next>
                             <block type="on" id="[~`aZbXg|MwH^/]r2eKq">
                               <field name="OID">alexa2.0.History.summary</field>
                               <field name="CONDITION">any</field>
                               <field name="ACK_CONDITION"></field>
                               <statement name="STATEMENT">
                                 <block type="variables_set" id="|Y?dP^7^w/)!*0$3}/#Y">
                                   <field name="VAR" id="hsYte9@o`T2BDaS,~4hu" variabletype="">alexa_voice</field>
                                   <value name="VALUE">
                                     <block type="get_value" id="8#aiKcrm:u{sjs0cUfhr">
                                       <field name="ATTR">val</field>
                                       <field name="OID">0_userdata.0.Alexa_Ansagen.Stimmen.05Alexa_ssml</field>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="variables_set" id="#LjgD75rPUU:r.P%*]2^">
                                       <field name="VAR" id="^$:ikT~4TjYuk|1umMYe" variabletype="">hans_voice</field>
                                       <value name="VALUE">
                                         <block type="get_value" id="GP6WGh*S#uF^|L$Xf=^s">
                                           <field name="ATTR">val</field>
                                           <field name="OID">0_userdata.0.Alexa_Ansagen.Stimmen.06Hans_ssml</field>
                                         </block>
                                       </value>
                                       <next>
                                         <block type="variables_set" id="MvSk+J3jhK;,;nnz.?5_">
                                           <field name="VAR" id="H/)RG7L1z9=:IM[[N)s]" variabletype="">vicki_voice</field>
                                           <value name="VALUE">
                                             <block type="get_value" id="Q73;gvzZe(OOtS;xBeVd">
                                               <field name="ATTR">val</field>
                                               <field name="OID">0_userdata.0.Alexa_Ansagen.Stimmen.07Vicki_ssml</field>
                                             </block>
                                           </value>
                                           <next>
                                             <block type="variables_set" id="A8ixxD,Rb{NT`8ud;lY}">
                                               <field name="VAR" id=".Ef/-7s*/H3{8G|ut#TF" variabletype="">conchita_voice</field>
                                               <value name="VALUE">
                                                 <block type="get_value" id="1{q_i]9;pVS]oY@S6uLq">
                                                   <field name="ATTR">val</field>
                                                   <field name="OID">0_userdata.0.Alexa_Ansagen.Stimmen.08Conchita_ssml</field>
                                                 </block>
                                               </value>
                                               <next>
                                                 <block type="variables_set" id="D@jsvo])3JLj/v!fA(?-">
                                                   <field name="VAR" id="h$;}IKI;/5Nr%M?LEdX]" variabletype="">ssml_ende</field>
                                                   <value name="VALUE">
                                                     <block type="get_value" id="5[3qWOD`xha3N;EJS8}7">
                                                       <field name="ATTR">val</field>
                                                       <field name="OID">0_userdata.0.Alexa_Ansagen.Stimmen.09ssml_ende</field>
                                                     </block>
                                                   </value>
                                                   <next>
                                                     <block type="variables_set" id="JzY)};|[y:|a2B=~f{1p">
                                                       <field name="VAR" id=",8hPjyuv!|v-;xyG2[GM" variabletype="">stimmenwechsel_alexa</field>
                                                       <value name="VALUE">
                                                         <block type="get_value" id="!dKZJ54A6h#?J~RSV%3~">
                                                           <field name="ATTR">val</field>
                                                           <field name="OID">0_userdata.0.Alexa_Ansagen.Stimmen.10Alexa_Stimmenwechsel_ssml</field>
                                                         </block>
                                                       </value>
                                                       <next>
                                                         <block type="variables_set" id="W7id@jkpI:9O)zPL.DTU">
                                                           <field name="VAR" id="1R[1|dIw2YY/SWSjV8vi" variabletype="">stimmenwechsel_hans</field>
                                                           <value name="VALUE">
                                                             <block type="get_value" id="4xY(7AjKi~^ljks.n841">
                                                               <field name="ATTR">val</field>
                                                               <field name="OID">0_userdata.0.Alexa_Ansagen.Stimmen.11Hans_Stimmenwechsel_ssml</field>
                                                             </block>
                                                           </value>
                                                           <next>
                                                             <block type="variables_set" id="46SatHI]v=bv/%P:j+bp">
                                                               <field name="VAR" id="hVUr^m=0SqBl!qr4l}8a" variabletype="">stimmenwechsel_vicki</field>
                                                               <value name="VALUE">
                                                                 <block type="get_value" id="9=0xIG,Pc!5XUSS)U!_x">
                                                                   <field name="ATTR">val</field>
                                                                   <field name="OID">0_userdata.0.Alexa_Ansagen.Stimmen.12Vicki_Stimmenwechsel_ssml</field>
                                                                 </block>
                                                               </value>
                                                               <next>
                                                                 <block type="variables_set" id="]oJ#b{fZ0P*!wSNoKZ9A">
                                                                   <field name="VAR" id="5LniT)a9cR_h6Mo!t*1N" variabletype="">stimmenwechsel_conchita</field>
                                                                   <value name="VALUE">
                                                                     <block type="get_value" id="WH]s$i*uV`:tg,XZy@I/">
                                                                       <field name="ATTR">val</field>
                                                                       <field name="OID">0_userdata.0.Alexa_Ansagen.Stimmen.13Conchita_Stimmenwechsel_ssml</field>
                                                                     </block>
                                                                   </value>
                                                                   <next>
                                                                     <block type="variables_set" id="Z-IEV|C0/NEL0o95zRdg">
                                                                       <field name="VAR" id="eHmEd,;db!BBO)-s0Y{Z" variabletype="">fluestern_anfang</field>
                                                                       <value name="VALUE">
                                                                         <block type="get_value" id="(Gi;jkQ]RrIAIXz4`;d3">
                                                                           <field name="ATTR">val</field>
                                                                           <field name="OID">0_userdata.0.Alexa_Ansagen.Stimmen.14fluestern_anfang</field>
                                                                         </block>
                                                                       </value>
                                                                       <next>
                                                                         <block type="variables_set" id="{t0fi5sc0=}!DE,jnlS8">
                                                                           <field name="VAR" id="XITSHPBx:4U5JEzlW6ov" variabletype="">fluestern_ende</field>
                                                                           <value name="VALUE">
                                                                             <block type="get_value" id="Glna:ISU*6zQ:HYj`6PC">
                                                                               <field name="ATTR">val</field>
                                                                               <field name="OID">0_userdata.0.Alexa_Ansagen.Stimmen.15fluestern_ende</field>
                                                                             </block>
                                                                           </value>
                                                                           <next>
                                                                             <block type="controls_if" id="AmHCZmZQ?D_nGLF,U{=u">
                                                                               <value name="IF0">
                                                                                 <block type="logic_compare" id="^dLRtgWT~Tt++cL($NKn">
                                                                                   <field name="OP">EQ</field>
                                                                                   <value name="A">
                                                                                     <block type="get_value" id="9IQ29otyT#F-Spsl%l1I">
                                                                                       <field name="ATTR">val</field>
                                                                                       <field name="OID">alexa2.0.History.summary</field>
                                                                                     </block>
                                                                                   </value>
                                                                                   <value name="B">
                                                                                     <block type="text" id="V#v}1F.Uu4q+Op8a+EQU">
                                                                                       <field name="TEXT">testansage</field>
                                                                                     </block>
                                                                                   </value>
                                                                                 </block>
                                                                               </value>
                                                                               <statement name="DO0">
                                                                                 <block type="variables_set" id="c0:5H;c}I61=O)k/{m}s">
                                                                                   <field name="VAR" id="]8CjUu1tTXk^pZvPD9pk" variabletype="">Lautstaerke</field>
                                                                                   <value name="VALUE">
                                                                                     <block type="math_number" id="VP%:,w*{wn*j@Ro_~V.n">
                                                                                       <field name="NUM">100</field>
                                                                                     </block>
                                                                                   </value>
                                                                                   <next>
                                                                                     <block type="variables_set" id="zsVZKg0]4(L1ixvAR)/1">
                                                                                       <field name="VAR" id="tx`]izPXI!BeK19V`CX$" variabletype="">angesprochener_echo</field>
                                                                                       <value name="VALUE">
                                                                                         <block type="text_join" id="Ro|ihCQ:AQOt.3`TUQwM">
                                                                                           <mutation items="3"></mutation>
                                                                                           <value name="ADD0">
                                                                                             <block type="text" id="!3N6!z_sBxoud+?AYsuv">
                                                                                               <field name="TEXT">alexa2.0.Echo-Devices.</field>
                                                                                             </block>
                                                                                           </value>
                                                                                           <value name="ADD1">
                                                                                             <block type="get_value" id="sIB7uOMmNbK:-t:a.QR;">
                                                                                               <field name="ATTR">val</field>
                                                                                               <field name="OID">alexa2.0.History.serialNumber</field>
                                                                                             </block>
                                                                                           </value>
                                                                                           <value name="ADD2">
                                                                                             <block type="text" id="(=O9cXWAffYNZ}Z0`DxZ">
                                                                                               <field name="TEXT">.Commands.ssml</field>
                                                                                             </block>
                                                                                           </value>
                                                                                         </block>
                                                                                       </value>
                                                                                       <next>
                                                                                         <block type="variables_set" id="i38T``MGhvb6dO^:S]M$">
                                                                                           <field name="VAR" id="}tfHo!d;DNiy8lns,/nq" variabletype="">speak_volume</field>
                                                                                           <value name="VALUE">
                                                                                             <block type="text_join" id=".du,f^-[km~vy3f,^+!;">
                                                                                               <mutation items="3"></mutation>
                                                                                               <value name="ADD0">
                                                                                                 <block type="text" id="YRnYeZjQ^P?$m)miSuWv">
                                                                                                   <field name="TEXT">alexa2.0.Echo-Devices.</field>
                                                                                                 </block>
                                                                                               </value>
                                                                                               <value name="ADD1">
                                                                                                 <block type="get_value" id="A$L7:D{nF;z|(]R15M6s">
                                                                                                   <field name="ATTR">val</field>
                                                                                                   <field name="OID">alexa2.0.History.serialNumber</field>
                                                                                                 </block>
                                                                                               </value>
                                                                                               <value name="ADD2">
                                                                                                 <block type="text" id="nqD6Te,c(D?G{y#CCFql">
                                                                                                   <field name="TEXT">.Commands.speak-volume</field>
                                                                                                 </block>
                                                                                               </value>
                                                                                             </block>
                                                                                           </value>
                                                                                           <next>
                                                                                             <block type="control_ex" id="m*49S0.[D:6!M#Fv~sJz" inline="true">
                                                                                               <field name="TYPE">false</field>
                                                                                               <field name="CLEAR_RUNNING">FALSE</field>
                                                                                               <value name="OID">
                                                                                                 <shadow type="field_oid" id="hb?Q/-%_9A^!+jRfuTnL">
                                                                                                   <field name="oid">Object ID</field>
                                                                                                 </shadow>
                                                                                                 <block type="variables_get" id="u![hpE!E%l3S_H~+~tia">
                                                                                                   <field name="VAR" id="}tfHo!d;DNiy8lns,/nq" variabletype="">speak_volume</field>
                                                                                                 </block>
                                                                                               </value>
                                                                                               <value name="VALUE">
                                                                                                 <shadow type="logic_boolean" id="Uo[{s0o3{[`(35T92ci2">
                                                                                                   <field name="BOOL">TRUE</field>
                                                                                                 </shadow>
                                                                                                 <block type="variables_get" id="qh[g_2lfHC*P$tQD7lYL">
                                                                                                   <field name="VAR" id="]8CjUu1tTXk^pZvPD9pk" variabletype="">Lautstaerke</field>
                                                                                                 </block>
                                                                                               </value>
                                                                                               <value name="DELAY_MS">
                                                                                                 <shadow type="math_number" id="s%4rnui3VS(SjQx|x-A+">
                                                                                                   <field name="NUM">0</field>
                                                                                                 </shadow>
                                                                                               </value>
                                                                                               <next>
                                                                                                 <block type="variables_set" id="~mUtLASbz4,[^)Mr^r(@">
                                                                                                   <field name="VAR" id="xn1_(a%|e4G}G4FdbhX:" variabletype="">Ansage</field>
                                                                                                   <value name="VALUE">
                                                                                                     <block type="text_join" id="6(p)A1L$:_75Icld.$!`">
                                                                                                       <mutation items="11"></mutation>
                                                                                                       <value name="ADD0">
                                                                                                         <block type="variables_get" id="K?;FJpSD.DAu(4Vl6#/!">
                                                                                                           <field name="VAR" id="hsYte9@o`T2BDaS,~4hu" variabletype="">alexa_voice</field>
                                                                                                         </block>
                                                                                                       </value>
                                                                                                       <value name="ADD1">
                                                                                                         <block type="text" id="X9wB$RtDd9S!6Cv%E*/@">
                                                                                                           <field name="TEXT">Ich teste jetzt die Lautstärke mit dem Wert 100.</field>
                                                                                                         </block>
                                                                                                       </value>
                                                                                                       <value name="ADD2">
                                                                                                         <block type="variables_get" id="P1x3s}vBZPp0qmWW-jb#">
                                                                                                           <field name="VAR" id="1R[1|dIw2YY/SWSjV8vi" variabletype="">stimmenwechsel_hans</field>
                                                                                                         </block>
                                                                                                       </value>
                                                                                                       <value name="ADD3">
                                                                                                         <block type="text" id="4_8*(J~8e8HAn?z2i.*O">
                                                                                                           <field name="TEXT"> Nach dieser Ansage stellt sich der Wert wieder zurück auf den vorher eingestellten Wert. </field>
                                                                                                         </block>
                                                                                                       </value>
                                                                                                       <value name="ADD4">
                                                                                                         <block type="variables_get" id="Q(ihJ[=VY;+#zMcnppVy">
                                                                                                           <field name="VAR" id="hVUr^m=0SqBl!qr4l}8a" variabletype="">stimmenwechsel_vicki</field>
                                                                                                         </block>
                                                                                                       </value>
                                                                                                       <value name="ADD5">
                                                                                                         <block type="text" id="e4~5oJfNN%v)~4M+$4y,">
                                                                                                           <field name="TEXT">Aber auch verschiedene Stimmen können ganz nett sein. </field>
                                                                                                         </block>
                                                                                                       </value>
                                                                                                       <value name="ADD6">
                                                                                                         <block type="variables_get" id="uj27HwU#KD5Q?qY4Ff,v">
                                                                                                           <field name="VAR" id="5LniT)a9cR_h6Mo!t*1N" variabletype="">stimmenwechsel_conchita</field>
                                                                                                         </block>
                                                                                                       </value>
                                                                                                       <value name="ADD7">
                                                                                                         <block type="text" id=",~Q+|d^-|,KIP*l+y)cH">
                                                                                                           <field name="TEXT">Ja, das stimmt. Ich bin verwirrt. </field>
                                                                                                         </block>
                                                                                                       </value>
                                                                                                       <value name="ADD8">
                                                                                                         <block type="variables_get" id="qsElU5x=z,CqeU_okG#!">
                                                                                                           <field name="VAR" id=",8hPjyuv!|v-;xyG2[GM" variabletype="">stimmenwechsel_alexa</field>
                                                                                                         </block>
                                                                                                       </value>
                                                                                                       <value name="ADD9">
                                                                                                         <block type="text" id="jX_Gw7!]oE@2|CONlV5H">
                                                                                                           <field name="TEXT">So, genug gequasselt. Ansage Ende.</field>
                                                                                                         </block>
                                                                                                       </value>
                                                                                                       <value name="ADD10">
                                                                                                         <block type="variables_get" id="D[ka=jJA~5QL?wl$=msz">
                                                                                                           <field name="VAR" id="h$;}IKI;/5Nr%M?LEdX]" variabletype="">ssml_ende</field>
                                                                                                         </block>
                                                                                                       </value>
                                                                                                     </block>
                                                                                                   </value>
                                                                                                   <next>
                                                                                                     <block type="variables_set" id="rd8Vm:g%lZIPouk@%0~[">
                                                                                                       <field name="VAR" id="g)Ql[6CLA*U1}0AW@%59" variabletype="">Ansage2</field>
                                                                                                       <value name="VALUE">
                                                                                                         <block type="text_join" id="gxMytiI`nl3D)G!RxBN2">
                                                                                                           <mutation items="3"></mutation>
                                                                                                           <value name="ADD0">
                                                                                                             <block type="variables_get" id="%$(wV^{e#TO1I$%E.F,5">
                                                                                                               <field name="VAR" id="eHmEd,;db!BBO)-s0Y{Z" variabletype="">fluestern_anfang</field>
                                                                                                             </block>
                                                                                                           </value>
                                                                                                           <value name="ADD1">
                                                                                                             <block type="text" id="`;^NfmSQ-{hBrChTk;eo">
                                                                                                               <field name="TEXT">Ich kann sogar flüstern. Oh Oh. </field>
                                                                                                             </block>
                                                                                                           </value>
                                                                                                           <value name="ADD2">
                                                                                                             <block type="variables_get" id="?gfiG/.F{kuYoBStkin5">
                                                                                                               <field name="VAR" id="XITSHPBx:4U5JEzlW6ov" variabletype="">fluestern_ende</field>
                                                                                                             </block>
                                                                                                           </value>
                                                                                                         </block>
                                                                                                       </value>
                                                                                                       <next>
                                                                                                         <block type="control_ex" id="Z0SIQv`YwR}U3y-7.C[_" inline="true">
                                                                                                           <field name="TYPE">false</field>
                                                                                                           <field name="CLEAR_RUNNING">FALSE</field>
                                                                                                           <value name="OID">
                                                                                                             <shadow type="field_oid" id="hb?Q/-%_9A^!+jRfuTnL">
                                                                                                               <field name="oid">Object ID</field>
                                                                                                             </shadow>
                                                                                                             <block type="variables_get" id="7XIJ@IIk+|w*,LY8F10b">
                                                                                                               <field name="VAR" id="tx`]izPXI!BeK19V`CX$" variabletype="">angesprochener_echo</field>
                                                                                                             </block>
                                                                                                           </value>
                                                                                                           <value name="VALUE">
                                                                                                             <shadow type="logic_boolean" id="Uo[{s0o3{[`(35T92ci2">
                                                                                                               <field name="BOOL">TRUE</field>
                                                                                                             </shadow>
                                                                                                             <block type="variables_get" id="c@cd-(g/KcOn2,^;@I[Q">
                                                                                                               <field name="VAR" id="xn1_(a%|e4G}G4FdbhX:" variabletype="">Ansage</field>
                                                                                                             </block>
                                                                                                           </value>
                                                                                                           <value name="DELAY_MS">
                                                                                                             <shadow type="math_number" id="SJ?NXn_.A!Y[+SZv]WYK">
                                                                                                               <field name="NUM">0</field>
                                                                                                             </shadow>
                                                                                                           </value>
                                                                                                           <next>
                                                                                                             <block type="control_ex" id="///ti2V{encKANYTI6Ya" inline="true">
                                                                                                               <field name="TYPE">false</field>
                                                                                                               <field name="CLEAR_RUNNING">FALSE</field>
                                                                                                               <value name="OID">
                                                                                                                 <shadow type="field_oid" id="hb?Q/-%_9A^!+jRfuTnL">
                                                                                                                   <field name="oid">Object ID</field>
                                                                                                                 </shadow>
                                                                                                                 <block type="variables_get" id="$x%/Yh*`_p}|%n0+6X).">
                                                                                                                   <field name="VAR" id="tx`]izPXI!BeK19V`CX$" variabletype="">angesprochener_echo</field>
                                                                                                                 </block>
                                                                                                               </value>
                                                                                                               <value name="VALUE">
                                                                                                                 <shadow type="logic_boolean" id="Uo[{s0o3{[`(35T92ci2">
                                                                                                                   <field name="BOOL">TRUE</field>
                                                                                                                 </shadow>
                                                                                                                 <block type="variables_get" id="}(OeQ:Wg,[eMtCwny-c/">
                                                                                                                   <field name="VAR" id="g)Ql[6CLA*U1}0AW@%59" variabletype="">Ansage2</field>
                                                                                                                 </block>
                                                                                                               </value>
                                                                                                               <value name="DELAY_MS">
                                                                                                                 <shadow type="math_number" id="MSay5)`ZstNNa$[ZaKfc">
                                                                                                                   <field name="NUM">0</field>
                                                                                                                 </shadow>
                                                                                                               </value>
                                                                                                             </block>
                                                                                                           </next>
                                                                                                         </block>
                                                                                                       </next>
                                                                                                     </block>
                                                                                                   </next>
                                                                                                 </block>
                                                                                               </next>
                                                                                             </block>
                                                                                           </next>
                                                                                         </block>
                                                                                       </next>
                                                                                     </block>
                                                                                   </next>
                                                                                 </block>
                                                                               </statement>
                                                                             </block>
                                                                           </next>
                                                                         </block>
                                                                       </next>
                                                                     </block>
                                                                   </next>
                                                                 </block>
                                                               </next>
                                                             </block>
                                                           </next>
                                                         </block>
                                                       </next>
                                                     </block>
                                                   </next>
                                                 </block>
                                               </next>
                                             </block>
                                           </next>
                                         </block>
                                       </next>
                                     </block>
                                   </next>
                                 </block>
                               </statement>
                             </block>
                           </next>
                         </block>
                       </next>
                     </block>
                   </next>
                 </block>
               </next>
             </block>
            </xml>
            

            T 1 Reply Last reply Reply Quote 1
            • T
              Tottbeck @dslraser last edited by

              @dslraser Danke für die Info.
              D.h. ich muß das Volume überhaupt nicht zurückstellen.
              Wenn man Sprachmeldungen mit unterschiedlicher Lautstärke (Priorität) benutzt, setzt man die halt vor jeder Sprachausgabe.
              Zusatzfrage: Ich habe die Alarmanlage in verschiedene Scripte unterteilt. Gibt es da so etwas wie globale Defines für die gewünschte Lautstärke?

              dslraser 1 Reply Last reply Reply Quote 0
              • dslraser
                dslraser Forum Testing Most Active @Tottbeck last edited by

                @Tottbeck sagte in Subfunktion in Blockly:

                Gibt es da so etwas wie globale Defines für die gewünschte Lautstärke?

                Das weiß ich leider nicht.

                1 Reply Last reply Reply Quote 0
                • T
                  Tottbeck @dslraser last edited by

                  @dslraser sagte in Subfunktion in Blockly:

                  Importiere das mal und starte das Blockly. Anschließend sagst Du mal Testansage. (dann sollte die Antwort kommen)

                  Funktioniert super

                  dslraser 1 Reply Last reply Reply Quote 0
                  • dslraser
                    dslraser Forum Testing Most Active @Tottbeck last edited by

                    @Tottbeck
                    hast Du auch mal die ssml Variante probiert ?😃

                    1 Reply Last reply Reply Quote 0
                    • T
                      Tottbeck @dslraser last edited by

                      @dslraser sagte in Subfunktion in Blockly:

                      und hier noch ein Beispiel was Du über ssml so anstellen kannst. (hier werden einige Datenpunkte erstellt)
                      Auch hier funktioniert das mit der Lautstärke.

                      Das läuft leider nicht.
                      Sollten die zugehörigen Datenpunkte automatisch angelegt werden ?
                      Unter "0_userdata.0" habe ich jedenfalls keine Objekte. "(nur "example_state")

                      dslraser 1 Reply Last reply Reply Quote 0
                      • dslraser
                        dslraser Forum Testing Most Active @Tottbeck last edited by

                        @Tottbeck
                        hast Du den aktiviert ?

                        Bildschirmfoto 2020-01-02 um 14.14.28.png

                        1 Reply Last reply Reply Quote 0
                        • T
                          Tottbeck last edited by

                          Ja, hatte ich testweise. Im Log nachgeschaut, dort steht:
                          (21604) script.js.Alarmanlage.Test2: Cannot write object: Function "setObject" is not allowed. Use adapter settings to allow it.
                          Habe im Javascript-Adapter die Option "Erlaube das Kommando "set Object" " aktiviert.
                          Jetzt wurden unter 0_userdata.0 Stimmen angelegt.
                          Funktioniert jetzt, ist ja erstaunlich, was das Ding so kann 😉👍
                          "Datenpunkte anlegen" kann ich danach wieder deaktivieren.

                          Ist das Alexa-Feature jetzt eigentlich begrenzt auf die 20 Aktivierungen pro Tag, oder ist das eine andere Geschichte ? Oder gilt das nur für den Cloud bzw IOT-Adapter?

                          dslraser 1 Reply Last reply Reply Quote 0
                          • dslraser
                            dslraser Forum Testing Most Active @Tottbeck last edited by dslraser

                            @Tottbeck sagte in Subfunktion in Blockly:

                            Datenpunkte anlegen" kann ich danach wieder deaktivieren.

                            ja, kannst Du dann deaktivieren.

                            Ist das Alexa-Feature jetzt eigentlich begrenzt auf die 20 Aktivierungen pro Tag, oder ist das eine andere Geschichte ? Oder gilt das nur für den Cloud bzw IOT-Adapter?

                            Ich habe schein seit Jahren eine Lizenz, da ist es "unbegrenzt".

                            1 Reply Last reply Reply Quote 0
                            • T
                              Tottbeck last edited by

                              Habe gerade auch die Assistenz-Lizenz für ein Jahr gekauft.
                              Musste erst eine Schaltung per IOT machen, bevor ich bezahlen durfte. 😉
                              Die Stimme von Marlene 👩‍⚖️ habe ich auch gerade getetest.

                              dslraser 1 Reply Last reply Reply Quote 1
                              • dslraser
                                dslraser Forum Testing Most Active @Tottbeck last edited by

                                @Tottbeck
                                die verschiedenen Stimmen könnte ich mir für Deinen Anwendungsfall "Alarmanlage" ganz gut vorstellen, deshalb hatte ich Dir die Richtung ssml gezeigt, weil da einfach mehr möglich ist als über speak.

                                1 Reply Last reply Reply Quote 0
                                • T
                                  Tottbeck last edited by

                                  Ja, Danke. Ist wirklich hilfreich.
                                  Dann kann man dem Einbrecher schon mal etwas vorflüstern oder einen lauten Familienstreit simulieren 😉
                                  "Du hast mich mit Conchita betrogen" usw 💃

                                  dslraser 1 Reply Last reply Reply Quote 0
                                  • dslraser
                                    dslraser Forum Testing Most Active @Tottbeck last edited by

                                    @Tottbeck sagte in Subfunktion in Blockly:

                                    "Du hast mich mit Conchita betrogen"

                                    😀

                                    1 Reply Last reply Reply Quote 0
                                    • T
                                      Tottbeck last edited by

                                      Die Sprachsteuerung per SSML funktioniert jetzt ganz gut, damit kann man die ganze umständliche Configuration im Cloud/IOT-Adapter umgehen.
                                      Man muß nur aufpassen, dass Alexa alles in Kleinbuchstaben versteht, denn der Text-Vergleich ist case-sensitive.

                                      Zu dem zweiten Punkt, bekomme ich einfach kein stabiles Blinken hin.
                                      @Tottbeck sagte in Subfunktion in Blockly:

                                      Das Blinken vom Xiaomi-Gateway (langsam in Blau für Aktiv, Schnell in Rot für Alarm) klappt nicht so wirklich. Manchmal geht es, aber irgendwie nicht stabil und nicht im gewünschten Zyklus/Farbe. Gibt es dazu Erfahrungswerte, was man dem Ding zumuten darf?

                                      Alle 5s für 1s aktiv sollte ja möglich sein, aber selbst das klappt nicht stabil. Gibt es da evtl störende Nebeneinflüsse durch die Xiaomi-App?

                                      1 Reply Last reply Reply Quote 0
                                      • T
                                        Tottbeck last edited by

                                        Hallo @dslraser , nochmal eine Frage zu Sprachsteuerung.
                                        Habe mir jetzt noch etwas eingebaut, damit mir Alexa sagt, wann die Haustür das letzte Mal geöffnet wurde.
                                        Das macht sie auch brav (wenn man berücksichtigt das sie meist "haus tür statt "Haustür" versteht).
                                        Ich frage für den Sprachbefehl die Alexa.history.summary in einem zentralen Modul ab. Die Alexa verarbeitet das aber parallel und will mir schon sagen, dass sie nicht weiß, was ich von ihr will, bis sie vom IoBroker-Ausgabe überstimmt wird. Kann man das verhindern ??

                                        Generell. Spricht eigentlich etwas dagegen alles direkt über die history.summary zu steuern, also ohne Konfiguration in Alexa-App und IOT-Adapter ??

                                        dslraser 1 Reply Last reply Reply Quote 0
                                        • dslraser
                                          dslraser Forum Testing Most Active @Tottbeck last edited by

                                          @Tottbeck sagte in Subfunktion in Blockly:

                                          Ich frage für den Sprachbefehl die Alexa.history.summary in einem zentralen Modul ab. Die Alexa verarbeitet das aber parallel und will mir schon sagen, dass sie nicht weiß, was ich von ihr will, bis sie vom IoBroker-Ausgabe überstimmt wird. Kann man das verhindern ??

                                          Ich mache eigentlich gar nichts direkt über die History bzw. habe es noch nicht über ein "Modul" probiert. Wie muß ich mir dieses "Modul" vorstellen ? Alles in einem Script ?
                                          Wie man das verhindern kann weiß ich nicht, da ich es nicht so mache.

                                          1 Reply Last reply Reply Quote 0
                                          • T
                                            Tottbeck last edited by

                                            Danke. Ein zentrales Blocky-Script wäre wohl der genauere Begriff für das SW-Modul. Dort kann ich dann mit "falls"/"sonst falls" alle Sprachbefehle ablegen.
                                            60024fcc-366f-4b6f-8694-7df2eb9aadf1-image.png
                                            Dort könnte ich auch wenn ein Befehl erkannt wurde, die Alexa-Antwort abwürgen. Wäre natürlich trotzdem irgendwie hinten herum.

                                            Wenn meine Methode allerdings dieses Problem verursacht und Deine nicht, dass ist Deine Methode (welche ?) wohl die passendere. 😉

                                            dslraser 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            905
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            22
                                            1479
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo