Navigation

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

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Bind Object in Schleife

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

      Hallo,

      ich versuche mal mein Vorhaben zu beschreiben und hoffe jemand versteht es. 😊

      Ich habe ein Paar Datenpunkte in „0_userdata.0.Home.Rollos.*.Datenpfad_TF-Kontakt“ diese haben als Wert den Datenpfad zu einen Tür/Fenster Kontakt. (Bei einen Datenpunkt ist der Wert z.B. alias.0.Kontakt_Fenster_Ankleidezimmer.STATE)

      Nicht alle Datenpunkte in „0_userdata.0.Home.Rollos.*.Datenpfad_TF-Kontakt“ haben einen Wert. (z.B. Fenster ohne Kontakt)

      Bei Datenpunkte mit Wert zum eigentlichen Kontakt möchte ich eine Bindung auf einen anderen Datenpunkt (0_userdata.0.Home.Rollos.*.do_not_edit.TFK_Status) herstellen.

      Grund: der durch Bindung vorhandene Datenpunkt kann im Skript wieder als Trigger etc. eingesetzt werden wobei der Auslöser durch den Datenpunkt „0_userdata.0.Home.Rollos.*.Datenpfad_TF-Kontakt“ dynamisch ist.

      Dafür habe ich folgende Schleife erstellt, laut debug Log ist auch alles so wie ich es möchte, aber das Binding wird immer nur auf den letzten Wert angewendet.
      Ich habe auch schon mit Pausen von mehreren Sekunden getestet aber keine Änderung.
      Wie gesagt die debug Blöcke sagen alles i.O.

      Bild Blockly


      blockly_bild.png

      Code Blockly


      <xml xmlns="https://developers.google.com/blockly/xml">
      <variables>
      <variable id="sFu:|TM%r=2q):|h1X=~">Debugmeldung_Steuerung_TFK</variable>
      <variable id="myK%DZsfMWoYzoIK1rQ3">Liste_TFK_DP</variable>
      <variable id="y)]e,[~SzD_t9rPzx?nJ">i</variable>
      <variable id="2prM#P_YcU|urtckoV6">TFK_Status</variable> </variables> <block type="variables_set" id="oLg^%os=.4n6NJCFQBi" x="-1337" y="463">
      <field name="VAR" id="sFu:|TM%r=2q):|h1X=~">Debugmeldung_Steuerung_TFK</field>
      <value name="VALUE">
      <block type="logic_boolean" id="u;T?]-B9-t#KrDUoyu7h">
      <field name="BOOL">TRUE</field>
      </block>
      </value>
      <next>
      <block type="variables_set" id="]T(6cS2FbgNg}Ij^$|q">
      <field name="VAR" id="myK%DZsfMWoYzoIK1rQ3">Liste_TFK_DP</field>
      <value name="VALUE">
      <block type="selector" id="t:Oa{Rodr?~%j|Zuuh-:">
      <field name="TEXT">0_userdata.0.Home.Rollos.
      .Datenpfad_TF-Kontakt</field>
      </block>
      </value>
      <next>
      <block type="controls_forEach" id="iMCkGkpB#^Yy%N_|9MfV">
      <field name="VAR" id="y)]e,[~SzD_t9rPzx?nJ">i</field>
      <value name="LIST">
      <block type="variables_get" id="2uP-Q]0Ch}~eVI)iQzIv">
      <field name="VAR" id="myK%DZsfMWoYzoIK1rQ3">Liste_TFK_DP</field>
      </block>
      </value>
      <statement name="DO">
      <block type="controls_if" id="xn-m)MFyFv_4/e:v.S2"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="Eu7^^G%+wP4k0Evdc-k4"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="BOhz1{~Gf1!I_]gLPlv}"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="E:[94rcI-UOri(JARrfq"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="Ul3$RBRP.D.MwB$=a;z}"> <field name="VAR" id="y)]e,[~SzD_t9rPzx?nJ">i</field> </block> </value> </block> </value> <value name="B"> <block type="text" id="%HPdACJ(%SV6p).:uF,">
      <field name="TEXT"></field>
      </block>
      </value>
      </block>
      </value>
      <statement name="DO0">
      <block type="controls_if" id="adO?pfh#YVfG:7a!~959">
      <value name="IF0">
      <block type="logic_compare" id="W8aBSNkhA!uUWc3bX3y?">
      <field name="OP">EQ</field>
      <value name="A">
      <block type="variables_get" id="tlW]Pa45bg1ktW:w/C(U">
      <field name="VAR" id="sFu:|TM%r=2q):|h1X=~">Debugmeldung_Steuerung_TFK</field>
      </block>
      </value>
      <value name="B">
      <block type="logic_boolean" id="=Smn64Jh5%.R5^{usb}G">
      <field name="BOOL">TRUE</field>
      </block>
      </value>
      </block>
      </value>
      <statement name="DO0">
      <block type="debug" id="0-^-V]d8.a%QrJ)T^s{2">
      <field name="Severity">log</field>
      <value name="TEXT">
      <shadow type="text" id="tK6L^!,vOD~sCNQ5z+p">
      <field name="TEXT">test</field>
      </shadow>
      <block type="text_join" id="T?xP]^
      ;=j+ETBI|,Tm"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="Mcet*)tSt!rxy[e5T%hS"> <field name="TEXT">**ROLLO** Kein Tür/Fenster Kontakt im Datenpunkt </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="GxS6(V-#IuwO.nMF_mQP"> <field name="VAR" id="y)]e,[~SzD_t9rPzx?nJ">i</field> </block> </value> <value name="ADD2"> <block type="text" id="G*Sz(([~}JJ4.LNoL=Tk"> <field name="TEXT"> eingetragen</field> </block> </value> </block> </value> </block> </statement> </block> </statement> <statement name="ELSE"> <block type="controls_if" id="4eQJrywRj];y}Z*a](G]"> <value name="IF0"> <block type="logic_compare" id="g/dF=nNldAqOGt3Q={x)"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="M[xJ|%!Y0f[,:9yx|Yia"> <field name="VAR" id="sFu:|TM%r=2q):|h1X=~">Debugmeldung_Steuerung_TFK</field> </block> </value> <value name="B"> <block type="logic_boolean" id="B^0CFxYS$+P~CQGyRmHf"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="hOHScx_Je}|Jq;m^ok3I"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="g74d_iSjClN]j)|D;NOo"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="|LRJ:qUiDo#PpfW[NR-T"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="^A2:QtUa9(m77?p^[opc"> <field name="TEXT">**ROLLO** Tür/Fenster Kontakt im Datenpunkt </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="Y:y[S[be-yuN0:amk^J0"> <field name="VAR" id="y)]e,[~SzD_t9rPzx?nJ">i</field> </block> </value> <value name="ADD2"> <block type="text" id="mWbV{wFw7J%oV|l-4$7+"> <field name="TEXT"> eingetragen</field> </block> </value> </block> </value> </block> </statement> <next> <block type="variables_set" id="$wi:vj$O1R0UuASE|63g"> <field name="VAR" id="2prM#P_YcU|urtckoV6">TFK_Status</field>
      <value name="VALUE">
      <block type="text_join" id="kfFqxM(pxu3.y--/}N-"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text_getSubstring" id="V4Z3C8@K?15@wrn?zK~">
      <mutation at1="false" at2="true"></mutation>
      <field name="WHERE1">FIRST</field>
      <field name="WHERE2">FROM_END</field>
      <value name="STRING">
      <block type="variables_get" id="R4YLy1TIaEYg]+kqtp)4">
      <field name="VAR" id="y)]e,[~SzD_t9rPzx?nJ">i</field>
      </block>
      </value>
      <value name="AT2">
      <block type="math_number" id="4=ut0)rn,|dr;sQt{N(J">
      <field name="NUM">22</field>
      </block>
      </value>
      </block>
      </value>
      <value name="ADD1">
      <block type="text" id="^S06UzRtz]q(mj;8{ip2">
      <field name="TEXT">.do_not_edit.TFK_Status</field>
      </block>
      </value>
      </block>
      </value>
      <next>
      <block type="timeouts_wait" id="7y71(IW5j@eweL:VPcL,">
      <field name="DELAY">1</field>
      <field name="UNIT">sec</field>
      <next>
      <block type="direct" id="UmK2J/ewcW0Go4*_?p]R">
      <field name="ONLY_CHANGES">TRUE</field>
      <value name="OID_SRC">
      <shadow type="field_oid" id="RSKyAJN:UDp}4@Yrdk,u">
      <field name="oid">Object ID 1</field>
      </shadow>
      <block type="get_value_var" id="xzfOfXHoQ89./xa#IgX">
      <field name="ATTR">val</field>
      <value name="OID">
      <shadow type="text" id="pUyv!7C8n
      iPei-zKf(a">
      <field name="TEXT"></field>
      </shadow>
      <block type="variables_get" id="yA|pPFlpVTkSEX4wCX:^">
      <field name="VAR" id="y)]e,[~SzD_t9rPzx?nJ">i</field>
      </block>
      </value>
      </block>
      </value>
      <value name="OID_DST">
      <shadow type="field_oid" id="#(Tk}@+,C.+sisICGSIh">
      <field name="oid">Object ID 2</field>
      </shadow>
      <block type="variables_get" id="KmOSa/e!yEhps(4Gpy%R">
      <field name="VAR" id="2prM#P_YcU|urtckoV6">TFK_Status</field> </block> </value> <next> <block type="controls_if" id="Z2_J#=CeKeMs[AaC_ozR"> <value name="IF0"> <block type="logic_compare" id="+f0ahAtk_/q6eXaXQ/uY"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="8;kNK)-~bFjjkAKoP):T"> <field name="VAR" id="sFu:|TM%r=2q):|h1X=~">Debugmeldung_Steuerung_TFK</field> </block> </value> <value name="B"> <block type="logic_boolean" id="W-eIX2[]s%*x3(IS7v,X"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="l*0Xoi*jh@P1IWdSUdUv"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id=",by2|84AB,liskv60TBm"> <mutation items="5"></mutation> <value name="ADD0"> <block type="text" id="Gw;Hu~:Hh_w#EAEU;m6">
      <field name="TEXT">ROLLO Wert vom Object </field>
      </block>
      </value>
      <value name="ADD1">
      <block type="get_value_var" id="q/hAfDhlzDG7DRbER:}?">
      <field name="ATTR">val</field>
      <value name="OID">
      <shadow type="text">
      <field name="TEXT"></field>
      </shadow>
      <block type="variables_get" id="{:igJ61()0doCHX7Sv">
      <field name="VAR" id="y)]e,[~SzD_t9rPzx?nJ">i</field>
      </block>
      </value>
      </block>
      </value>
      <value name="ADD2">
      <block type="text" id="gVBTvk@H[ym(1JOa~Wt?">
      <field name="TEXT"> mit </field>
      </block>
      </value>
      <value name="ADD3">
      <block type="variables_get" id="%8N:Um}o_us7|fi*nli)">
      <field name="VAR" id="2prM#P_YcU|urtckoV6">TFK_Status</field> </block> </value> <value name="ADD4"> <block type="text" id="hH4VppKs{oIq+^g$$m,">
      <field name="TEXT"> verbunden</field>
      </block>
      </value>
      </block>
      </value>
      </block>
      </statement>
      </block>
      </next>
      </block>
      </next>
      </block>
      </next>
      </block>
      </next>
      </block>
      </statement>
      </block>
      </statement>
      </block>
      </next>
      </block>
      </next>
      </block>
      </xml>

      Log

      
      javascript.0
      2022-12-13 12:36:05.384	info	script.js.common.0_userdata_0_.Home.Rollos.Forum_schleife: **ROLLO** Kein Tür/Fenster Kontakt im Datenpunkt 0_userdata.0.Home.Rollos.1OG_rechts.Datenpfad_TF-Kontakt eingetragen
      
      javascript.0
      2022-12-13 12:36:05.384	info	script.js.common.0_userdata_0_.Home.Rollos.Forum_schleife: **ROLLO** Kein Tür/Fenster Kontakt im Datenpunkt 0_userdata.0.Home.Rollos.1OG_mitte.Datenpfad_TF-Kontakt eingetragen
      
      javascript.0
      2022-12-13 12:36:05.384	info	script.js.common.0_userdata_0_.Home.Rollos.Forum_schleife: **ROLLO** Wert vom Object alias.0.Kontakt_Fenster_Ankleidezimmer.STATE mit 0_userdata.0.Home.Rollos.1OG_links.do_not_edit.TFK_Status verbunden
      
      javascript.0
      2022-12-13 12:36:04.383	info	script.js.common.0_userdata_0_.Home.Rollos.Forum_schleife: **ROLLO** Tür/Fenster Kontakt im Datenpunkt 0_userdata.0.Home.Rollos.1OG_links.Datenpfad_TF-Kontakt eingetragen
      
      javascript.0
      2022-12-13 12:36:04.383	info	script.js.common.0_userdata_0_.Home.Rollos.Forum_schleife: **ROLLO** Wert vom Object hm-rpc.0.NEQ0176624.1.STATE mit 0_userdata.0.Home.Rollos.1OG_Badezimmer.do_not_edit.TFK_Status verbunden
      
      javascript.0
      2022-12-13 12:36:03.383	info	script.js.common.0_userdata_0_.Home.Rollos.Forum_schleife: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
      
      javascript.0
      2022-12-13 12:36:03.383	info	script.js.common.0_userdata_0_.Home.Rollos.Forum_schleife: **ROLLO** Tür/Fenster Kontakt im Datenpunkt 0_userdata.0.Home.Rollos.1OG_Badezimmer.Datenpfad_TF-Kontakt eingetragen
      
      javascript.0
      2022-12-13 12:36:03.377	info	Start javascript script.js.common.0_userdata_0_.Home.Rollos.Forum_schleife
      

      haus-automatisierung 1 Reply Last reply Reply Quote 0
      • haus-automatisierung
        haus-automatisierung Developer Most Active @XBiT last edited by haus-automatisierung

        @xbit Ohne mir alles genau durchgelesen zu haben, sieht

        Binde Wert von Objekt ID "i" falsch aus. Das würde ja heißen, dass der Wert des Objektes eine weitere Objekt ID beinhalten müsste. Da sollte doch bestimmt nur die ID rein, oder?

        EDIT: Okay, scheint wirklich so zu sein. Verwirrend gemacht 🙂

        Zeig mal den generiertern JS-Code.

        XBiT 2 Replies Last reply Reply Quote 0
        • XBiT
          XBiT @haus-automatisierung last edited by

          @haus-automatisierung

          Nein, genau so wie du es sagst soll es sein

          Datenpfad.png

          1 Reply Last reply Reply Quote 0
          • XBiT
            XBiT @haus-automatisierung last edited by

            @haus-automatisierung

            Der JS-Code

            var Debugmeldung_Steuerung_TFK, Liste_TFK_DP, i, TFK_Status;
            
            
            Debugmeldung_Steuerung_TFK = true;
            Liste_TFK_DP = Array.prototype.slice.apply($("0_userdata.0.Home.Rollos.*.Datenpfad_TF-Kontakt"));
            for (var i_index in Liste_TFK_DP) {
             i = Liste_TFK_DP[i_index];
             if (getState(i).val == '') {
               if (Debugmeldung_Steuerung_TFK == true) {
                 console.log((['**ROLLO** Kein Tür/Fenster Kontakt im Datenpunkt ',i,' eingetragen'].join('')));
               }
             } else {
               if (Debugmeldung_Steuerung_TFK == true) {
                 console.log((['**ROLLO** Tür/Fenster Kontakt im Datenpunkt ',i,' eingetragen'].join('')));
               }
               TFK_Status = String(i.slice(0, i.length - 21)) + '.do_not_edit.TFK_Status';
               await wait(1000);
               on({id: getState(i).val, change: "ne"}, function (obj) {
                 setState(TFK_Status, obj.state.val);
               });if (Debugmeldung_Steuerung_TFK == true) {
                 console.log((['**ROLLO** Wert vom Object ',getState(i).val,' mit ',TFK_Status,' verbunden'].join('')));
               }
             }
            }
            
            //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0N2YXJpYWJsZXMlM0UlM0N2YXJpYWJsZSUyMGlkJTNEJTIyc0Z1JTNBJTdDVE0lMjVyJTNEMnEpJTNBJTdDaDFYJTNEfiUyMiUzRURlYnVnbWVsZHVuZ19TdGV1ZXJ1bmdfVEZLJTNDJTJGdmFyaWFibGUlM0UlM0N2YXJpYWJsZSUyMGlkJTNEJTIybXlLJTI1RFpzZk1Xb1l6b0lLMXJRMyUyMiUzRUxpc3RlX1RGS19EUCUzQyUyRnZhcmlhYmxlJTNFJTNDdmFyaWFibGUlMjBpZCUzRCUyMnkpJTVEZSUyQyU1Qn5TekRfdDlyUHp4JTNGbkolMjIlM0VpJTNDJTJGdmFyaWFibGUlM0UlM0N2YXJpYWJsZSUyMGlkJTNEJTIyJTYwMnByTSUyM1BfWWNVJTdDdXJ0Y2tvVjYlMjIlM0VURktfU3RhdHVzJTNDJTJGdmFyaWFibGUlM0UlM0MlMkZ2YXJpYWJsZXMlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfc2V0JTIyJTIwaWQlM0QlMjJvTGclNUUlMjVvcyUzRC40biU2MDZOSkNGUUJpJTIyJTIweCUzRCUyMi0xMTg3JTIyJTIweSUzRCUyMjU4OCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyc0Z1JTNBJTdDVE0lMjVyJTNEMnEpJTNBJTdDaDFYJTNEfiUyMiUzRURlYnVnbWVsZHVuZ19TdGV1ZXJ1bmdfVEZLJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMnUlM0JUJTNGJTVELUI5LXQlMjNLckRVb3l1N2glMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJCT09MJTIyJTNFVFJVRSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfc2V0JTIyJTIwaWQlM0QlMjIlNUQqVCg2Y1MyRmJnTmclN0RJaiU1RSUyNCU3Q3ElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMm15SyUyNURac2ZNV29Zem9JSzFyUTMlMjIlM0VMaXN0ZV9URktfRFAlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyc2VsZWN0b3IlMjIlMjBpZCUzRCUyMnQlM0FPYSU3QlJvZHIlM0Z+JTI1aiU3Q1p1dWgtJTNBJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRTBfdXNlcmRhdGEuMC5Ib21lLlJvbGxvcy4qLkRhdGVucGZhZF9URi1Lb250YWt0JTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xzX2ZvckVhY2glMjIlMjBpZCUzRCUyMmlNQ2tHa3BCJTIzJTVFWXklMjVOXyU3QzlNZlYlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMnkpJTVEZSUyQyU1Qn5TekRfdDlyUHp4JTNGbkolMjIlM0VpJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJMSVNUJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyMnVQLVElNUQwQ2glN0R+ZVZJKWlRekl2JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjJteUslMjVEWnNmTVdvWXpvSUsxclEzJTIyJTNFTGlzdGVfVEZLX0RQJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMnhuLW0pTUZ5RnZfNCUyRmUlM0F2LiU2MFMyJTIyJTNFJTNDbXV0YXRpb24lMjBlbHNlJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyRXU3JTVFJTVFRyUyNSUyQndQNGswRXZkYy1rNCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFRVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWVfdmFyJTIyJTIwaWQlM0QlMjJCT2h6MSU3Qn5HZjEhSV8lNURnTFBsdiU3RCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk9JRCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJFJTNBJTVCOTRyY0ktVU9yaShKQVJyZnElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjJVbDMlMjRSQlJQLkQuTXdCJTI0JTNEYSUzQnolN0QlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMnkpJTVEZSUyQyU1Qn5TekRfdDlyUHp4JTNGbkolMjIlM0VpJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjIlMjVIUGRBQ0ooJTI1U1Y2cCkuJTNBdSU2MEYlMkMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIyYWRPJTNGcGZoJTIzWVZmRyUzQTdhIX45NTklMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjJXOGFCU05raEEhdVVXYzNiWDN5JTNGJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VFUSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMnRsVyU1RFBhNDViZzFrdFclM0F3JTJGQyhVJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjJzRnUlM0ElN0NUTSUyNXIlM0QycSklM0ElN0NoMVglM0R+JTIyJTNFRGVidWdtZWxkdW5nX1N0ZXVlcnVuZ19URkslM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfYm9vbGVhbiUyMiUyMGlkJTNEJTIyJTNEU21uNjRKaDUlMjUuUjUlNUUlN0J1c2IlN0RHJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRVRSVUUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmRlYnVnJTIyJTIwaWQlM0QlMjIwLSU1RS1WJTVEZDguYSUyNVFySilUJTVFcyU3QjIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTZXZlcml0eSUyMiUzRWxvZyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJ0SzZMJTVFISUyQ3ZPRH5zKkNOUTV6JTJCcCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0V0ZXN0JTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0X2pvaW4lMjIlMjBpZCUzRCUyMlQlM0Z4UCU1RCU1RSolM0IlM0RqJTJCRVRCJTYwSSU3QyUyQ1RtJTIyJTNFJTNDbXV0YXRpb24lMjBpdGVtcyUzRCUyMjMlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJNY2V0Kil0U3Qhcnh5JTVCZTVUJTI1aFMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFKipST0xMTyoqJTIwS2VpbiUyMFQlQzMlQkNyJTJGRmVuc3RlciUyMEtvbnRha3QlMjBpbSUyMERhdGVucHVua3QlMjAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQxJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyR3hTNihWLSUyM0l1d08ubk1GX21RUCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyeSklNURlJTJDJTVCflN6RF90OXJQenglM0ZuSiUyMiUzRWklM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQyJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyRypTeigoJTVCfiU3REpKNC5MTm9MJTNEVGslMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTIwZWluZ2V0cmFnZW4lM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJFTFNFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMjRlUUpyeXdSaiU1RCUzQnklN0RaKmElNUQoRyU1RCUyMiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMmclMkZkRiUzRG5ObGRBcU9HdDNRJTNEJTdCeCklMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyTSU1QnhKJTdDJTI1IVkwZiU1QiUyQyUzQTl5eCU3Q1lpYSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyc0Z1JTNBJTdDVE0lMjVyJTNEMnEpJTNBJTdDaDFYJTNEfiUyMiUzRURlYnVnbWVsZHVuZ19TdGV1ZXJ1bmdfVEZLJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMkIlNUUwQ0Z4WVMlMjQlMkJQfkNRR3lSbUhmJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRVRSVUUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmRlYnVnJTIyJTIwaWQlM0QlMjJoT0hTY3hfSmUlN0QlN0NKcSUzQm0lNUVvazNJJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU2V2ZXJpdHklMjIlM0Vsb2clM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyZzc0ZF9pU2pDbE4lNURqKSU3Q0QlM0JOT28lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFdGVzdCUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dF9qb2luJTIyJTIwaWQlM0QlMjIlN0NMUkolM0FxVWlEbyUyM1BwZlclNUJOUi1UJTIyJTNFJTNDbXV0YXRpb24lMjBpdGVtcyUzRCUyMjMlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjIlNUVBMiUzQVF0VWE5KG03NyUzRnAlNUUlNUJvcGMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFKipST0xMTyoqJTIwVCVDMyVCQ3IlMkZGZW5zdGVyJTIwS29udGFrdCUyMGltJTIwRGF0ZW5wdW5rdCUyMCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjJZJTNBeSU1QlMlNUJiZS15dU4wJTNBYW1rJTVFSjAlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMnkpJTVEZSUyQyU1Qn5TekRfdDlyUHp4JTNGbkolMjIlM0VpJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQUREMiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMm1XYlYlN0J3Rnc3SiUyNW9WJTdDbC00JTI0NyUyQiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlMjBlaW5nZXRyYWdlbiUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfc2V0JTIyJTIwaWQlM0QlMjIlMjR3aSUzQXZqJTI0TzFSMFV1QVNFJTdDNjNnJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjIlNjAycHJNJTIzUF9ZY1UlN0N1cnRja29WNiUyMiUzRVRGS19TdGF0dXMlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dF9qb2luJTIyJTIwaWQlM0QlMjJrZkZxeE0ocHh1My55LS0lMkYlN0ROJTYwLSUyMiUzRSUzQ211dGF0aW9uJTIwaXRlbXMlM0QlMjIyJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dF9nZXRTdWJzdHJpbmclMjIlMjBpZCUzRCUyMlY0WjNDOCU0MEslM0YxNSU0MHdybiUzRnpLfiU2MCUyMiUzRSUzQ211dGF0aW9uJTIwYXQxJTNEJTIyZmFsc2UlMjIlMjBhdDIlM0QlMjJ0cnVlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSEVSRTElMjIlM0VGSVJTVCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0hFUkUyJTIyJTNFRlJPTV9FTkQlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlNUUklORyUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMlI0WUx5MVRJYUVZZyU1RCUyQmtxdHApNCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyeSklNURlJTJDJTVCflN6RF90OXJQenglM0ZuSiUyMiUzRWklM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBVDIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyNCUzRHV0MClybiUyQyU3Q2RyJTNCc1F0JTdCTihKJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMjIlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQUREMSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMiU1RVMwNlV6UnR6JTVEcShtaiUzQjglN0JpcDIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFLmRvX25vdF9lZGl0LlRGS19TdGF0dXMlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRpbWVvdXRzX3dhaXQlMjIlMjBpZCUzRCUyMjd5NzEoSVc1aiU0MGV3ZUwlM0FWUGNMJTJDJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyREVMQVklMjIlM0UxJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJVTklUJTIyJTNFc2VjJTNDJTJGZmllbGQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZGlyZWN0JTIyJTIwaWQlM0QlMjJVbUsySiUyRmV3Y1cwR280Kl8lM0ZwJTVEUiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9OTFlfQ0hBTkdFUyUyMiUzRVRSVUUlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk9JRF9TUkMlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIyZmllbGRfb2lkJTIyJTIwaWQlM0QlMjJSU0t5QUpOJTNBVURwJTdENCU0MFlyZGslMkN1JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyb2lkJTIyJTNFT2JqZWN0JTIwSUQlMjAxJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWVfdmFyJTIyJTIwaWQlM0QlMjJ4emZPKmZYSG9RODkuJTJGeGElMjNJZ1glMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJPSUQlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIycFV5diE3QzhuKmlQZWktektmKGElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjJ5QSU3Q3BQRmxwVlRrU0VYNHdDWCUzQSU1RSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyeSklNURlJTJDJTVCflN6RF90OXJQenglM0ZuSiUyMiUzRWklM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyT0lEX0RTVCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJmaWVsZF9vaWQlMjIlMjBpZCUzRCUyMiUyMyhUayU3RCU0MCUyQiUyQ0MuJTJCc2lzSUNHU0loJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyb2lkJTIyJTNFT2JqZWN0JTIwSUQlMjAyJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjJLbU9TYSUyRmUheUVocHMoNEdweSUyNVIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMiU2MDJwck0lMjNQX1ljVSU3Q3VydGNrb1Y2JTIyJTNFVEZLX1N0YXR1cyUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIyWjJfSiUyMyUzRENlS2VNcyU1QkFhQ19velIlMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjIlMkJmMGFoQXRrXyUyRnE2ZVhhWFElMkZ1WSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFRVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjI4JTNCa05LKS1+YkZqamtBS29QKSUzQVQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMnNGdSUzQSU3Q1RNJTI1ciUzRDJxKSUzQSU3Q2gxWCUzRH4lMjIlM0VEZWJ1Z21lbGR1bmdfU3RldWVydW5nX1RGSyUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19ib29sZWFuJTIyJTIwaWQlM0QlMjJXLWVJWDIlNUIlNURzJTI1KngzKElTN3YlMkNYJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRVRSVUUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmRlYnVnJTIyJTIwaWQlM0QlMjJsKjBYb2kqamglNDBQMUlXZFNVZFV2JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU2V2ZXJpdHklMjIlM0Vsb2clM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIydGV4dCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0V0ZXN0JTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0X2pvaW4lMjIlMjBpZCUzRCUyMiUyQ2J5MiU3Qzg0QUIlMkNsaXNrdjYwVEJtJTIyJTNFJTNDbXV0YXRpb24lMjBpdGVtcyUzRCUyMjUlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJHdyUzQkh1fiUzQUhoX3clMjNFQUVVJTNCbSU2MDYlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFKipST0xMTyoqJTIwV2VydCUyMHZvbSUyME9iamVjdCUyMCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWVfdmFyJTIyJTIwaWQlM0QlMjJxJTJGaEFmRGhsekRHN0RSYkVSJTNBJTdEJTNGJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyT0lEJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMnRleHQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjIlN0IlM0FpZ0o2MSgpMGRvQ0hYKjcqU3YlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMnkpJTVEZSUyQyU1Qn5TekRfdDlyUHp4JTNGbkolMjIlM0VpJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJnVkJUdmslNDBIJTVCeW0oMUpPYX5XdCUzRiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlMjBtaXQlMjAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQzJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyJTI1OE4lM0FVbSU3RG9fdXM3JTdDZmkqbmxpKSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyJTYwMnByTSUyM1BfWWNVJTdDdXJ0Y2tvVjYlMjIlM0VURktfU3RhdHVzJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQURENCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMmhINFZwcEtzJTdCb0klNjBxJTJCJTVFZyUyNCUyNG0lMkMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTIwdmVyYnVuZGVuJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGeG1sJTNF
            

            haus-automatisierung 1 Reply Last reply Reply Quote 0
            • haus-automatisierung
              haus-automatisierung Developer Most Active @XBiT last edited by haus-automatisierung

              @xbit Das Problem sind (mal wieder) die "globalen" Scopes von erstellten Variablen in Blockly:

              on({id: getState(i).val, change: "ne"}, function (obj) {
                   setState(TFK_Status, obj.state.val);
                 });
              

              Dadurch wird TFK_Status immer die letzte ID enthalten, welche die Schleife durchlaufen hat. Wenn der Trigger nun auslöst, dann steht in TFK_Status in jeder Trigger-Logik der gleiche Wert.

              Das würde so funktionieren, wenn Blockly nicht in der ersten Zeile des scripts

              var Debugmeldung_Steuerung_TFK, Liste_TFK_DP, i, TFK_Status;
              

              schreiben würde... Ich glaube da hilft nur: Blockly wegwerfen und in JavaScript implementieren.

              XBiT 1 Reply Last reply Reply Quote 0
              • XBiT
                XBiT @haus-automatisierung last edited by

                @haus-automatisierung

                Okay .. bin froh das ich mir das zusammen klicken kann 🙂 da wird es nichts mit JS ...

                Fraglich ist halt nur warum der debug Block am ende alle Werte richtig anzeigt. also auch TFK_Status..

                Danke für deine Hilfe.

                haus-automatisierung 1 Reply Last reply Reply Quote 0
                • haus-automatisierung
                  haus-automatisierung Developer Most Active @XBiT last edited by

                  @xbit sagte in Bind Object in Schleife:

                  Fraglich ist halt nur warum der debug Block am ende alle Werte richtig anzeigt. also auch TFK_Status..

                  Weil während des Schleifendurchlaufes die Variable ja den Wert hat. Aber da diese global deklariert wird, eben nicht mehr wenn die Logik innerhalb der Trigger ausgelöst wird. Hier als JS, so gehts:

                  let Debugmeldung_Steuerung_TFK = true;
                  
                  const Liste_TFK_DP = Array.prototype.slice.apply($('0_userdata.0.Home.Rollos.*.Datenpfad_TF-Kontakt'));
                  
                  for (const idx in Liste_TFK_DP) {
                   const i = Liste_TFK_DP[idx];
                   if (getState(i).val == '') {
                     if (Debugmeldung_Steuerung_TFK == true) {
                       console.log(`**ROLLO** Kein Tür/Fenster Kontakt im Datenpunkt ${i} eingetragen`);
                     }
                   } else {
                     if (Debugmeldung_Steuerung_TFK == true) {
                       console.log(`**ROLLO** Tür/Fenster Kontakt im Datenpunkt ${i} eingetragen`);
                     }
                  
                     const TFK_Status = String(i.slice(0, i.length - 21)) + '.do_not_edit.TFK_Status';
                  
                     on({id: getState(i).val, change: "ne"}, (obj) => {
                       setState(TFK_Status, obj.state.val);
                     });
                  
                     if (Debugmeldung_Steuerung_TFK == true) {
                       console.log(`**ROLLO** Wert vom Object ${getState(i).val} mit ${TFK_Status} verbunden`);
                     }
                   }
                  }
                  
                  XBiT 1 Reply Last reply Reply Quote 1
                  • XBiT
                    XBiT @haus-automatisierung last edited by XBiT

                    @haus-automatisierung

                    1000 Dank für die Hilfe,

                    habe es als Javascript-Funktion in das Blockly mit rein gemacht (weil noch mehr in dem Blockly ist als gezeigt) und es läuft.
                    Besten Dank

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    468
                    Online

                    32.0k
                    Users

                    80.5k
                    Topics

                    1.3m
                    Posts

                    2
                    8
                    487
                    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