Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Stark verzögerte Triggerreaktion IDs vom Selektor

    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

    [gelöst] Stark verzögerte Triggerreaktion IDs vom Selektor

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

      @puppet1912 Hab da mal was gebastelt und getestet. Zumindest funktionierts bei mir so ohne Verzögerung mit den Shellys:

      Screenshot 2022-07-12 164815.png

      JS-Funktion:

      return getObject(id).common.name; 
      


      <xml xmlns="https://developers.google.com/blockly/xml">
      <variables>
      <variable id="pG9B-J+!~NV%)XblSH">Liste</variable>
      <variable id="}C,vdrOLxAOW-W^#ZQA">id</variable> <variable id="2h_!zm_t0]ewai#h}K^]">true</variable> <variable id="|RHJi9fgTN)D1LhbkEC1">false</variable> <variable id="2?n$Sb1zieDf0D4ctS+}">i</variable> </variables> <block type="variables_set" id="zC!X6xvd{_[#iFUWSw``" x="-262" y="-562"> <field name="VAR" id="pG9B-J+!~NV%)Xb*l*SH">Liste</field> <value name="VALUE"> <block type="selector" id="03?xKTf;!VOD19Rsa2_">
      <field name="TEXT">(functions=LostCon)</field>
      </block>
      </value>
      <next>
      <block type="on_ext" id="X}-6Uq@:qL:+S[V!TlgU">
      <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
      <field name="CONDITION">ne</field>
      <field name="ACK_CONDITION"></field>
      <value name="OID0">
      <shadow type="field_oid" id=",UI,O@^F$|0_}9_rOi%[">
      <field name="oid">default</field>
      </shadow>
      <block type="variables_get" id="||}udX0swL73ERhMn+rw">
      <field name="VAR" id="pG9B-J+!~NV%)Xb
      lSH">Liste</field>
      </block>
      </value>
      <statement name="STATEMENT">
      <block type="variables_set" id="t9eKT0wDh0XFL1OZ)jt)">
      <field name="VAR" id="2h_!zm_t0]ewai#h}K^]">true</field>
      <value name="VALUE">
      <block type="lists_create_with" id="X#w]EW^#iuk2:PK^ZoYc">
      <mutation items="0"></mutation>
      </block>
      </value>
      <next>
      <block type="variables_set" id="Tza;}.8_KJj4;={,1X0(">
      <field name="VAR" id="|RHJi9fgTN)D1LhbkEC1">false</field>
      <value name="VALUE">
      <block type="lists_create_with" id="Qx+7[5,#{1!80#L[77h(">
      <mutation items="0"></mutation>
      </block>
      </value>
      <next>
      <block type="controls_forEach" id="ZzPLw7BWHG}u1*z0e8-"> <field name="VAR" id="2?n$Sb1zieDf0D4ctS+}">i</field> <value name="LIST"> <block type="variables_get" id="8,Oa4x%oB%77/G;?zRWf"> <field name="VAR" id="pG9B-J+!~NV%)Xb*l*SH">Liste</field> </block> </value> <statement name="DO"> <block type="controls_if" id="rF{)FjpW~?p!$/)n7Yes"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="wKBFF*;^K,!0KZdbKK#F"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="CS+0WsMog?-H0?;}e1+K"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="mhsW9*bv%JB/f4}))K.h"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="cX$x9lAxqCm-P~bKl?x">
      <field name="VAR" id="2?n$Sb1zieDf0D4ctS+}">i</field>
      </block>
      </value>
      </block>
      </value>
      <value name="B">
      <block type="logic_boolean" id="5gOxApd5zGl5nd0/,gao">
      <field name="BOOL">TRUE</field>
      </block>
      </value>
      </block>
      </value>
      <statement name="DO0">
      <block type="lists_setIndex" id="IiueN#6;R^G~gn7!)SPR">
      <mutation at="false"></mutation>
      <field name="MODE">INSERT</field>
      <field name="WHERE">LAST</field>
      <value name="LIST">
      <block type="variables_get" id="w/G9Ia/IK[tpg_(:9fmY">
      <field name="VAR" id="2h_!zm_t0]ewai#h}K^]">true</field>
      </block>
      </value>
      <value name="TO">
      <block type="procedures_callcustomreturn" id="_+2;w)2qKXCqLfF0jq2}" inline="true">
      <mutation name="getName">
      <arg name="id"></arg>
      </mutation>
      <value name="ARG0">
      <block type="variables_get" id=".J
      ToNM/JOp:l0%=lzA[">
      <field name="VAR" id="2?n$Sb1zieDf0D4ctS+}">i</field>
      </block>
      </value>
      </block>
      </value>
      </block>
      </statement>
      <value name="IF1">
      <block type="logic_compare" id="RO?3M*^lipp5yer,0;a-">
      <field name="OP">EQ</field>
      <value name="A">
      <block type="get_value_var" id="Je!LG;-@sDx_s2T:/R~S">
      <field name="ATTR">val</field>
      <value name="OID">
      <shadow type="text">
      <field name="TEXT"></field>
      </shadow>
      <block type="variables_get" id="EJm..ko}GNy1^K7pwr3"> <field name="VAR" id="2?n$Sb1zieDf0D4ctS+}">i</field> </block> </value> </block> </value> <value name="B"> <block type="logic_boolean" id="yo.}z[wX)0qj{@a,+R;b"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="lists_setIndex" id="b{J_~z;D9VRto_a._DYT"> <mutation at="false"></mutation> <field name="MODE">INSERT</field> <field name="WHERE">LAST</field> <value name="LIST"> <block type="variables_get" id="%Xy{Qz7s0D?}^Ox(+g4]"> <field name="VAR" id="|RHJi9fgTN)D1LhbkEC1">false</field> </block> </value> <value name="TO"> <block type="procedures_callcustomreturn" id="WMCLrhs{E7,jlKPtWi66" inline="true"> <mutation name="getName"> <arg name="id"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="{Jh]i28kn4PgtB}WB@9">
      <field name="VAR" id="2?n$Sb1zieDf0D4ctS+}">i</field>
      </block>
      </value>
      </block>
      </value>
      </block>
      </statement>
      </block>
      </statement>
      <next>
      <block type="debug" id="5~4}NVirRxn;gwr!aA1o">
      <field name="Severity">log</field>
      <value name="TEXT">
      <shadow type="text" id="kGrb;[!z}G7y1E?,}8,7">
      <field name="TEXT">test</field>
      </shadow>
      <block type="text_join" id="Tj.JFZV!DSdD*iYxq9Vk">
      <mutation items="2"></mutation>
      <value name="ADD0">
      <block type="text" id="t1|pWSmrHphA9#oaS66"> <field name="TEXT">Offline: </field> </block> </value> <value name="ADD1"> <block type="lists_split" id="S03BCKA+zz=MLOX{Rtk">
      <mutation mode="JOIN"></mutation>
      <field name="MODE">JOIN</field>
      <value name="INPUT">
      <block type="variables_get" id="q=V1A8T~j{j6rGzHm^:S">
      <field name="VAR" id="|RHJi9fgTN)D1LhbkEC1">false</field>
      </block>
      </value>
      <value name="DELIM">
      <shadow type="text" id="qEn(]!)8s2FYDtOefrUM">
      <field name="TEXT">,</field>
      </shadow>
      <block type="text" id="$XZ{JkZf6jbux/){6t6j">
      <field name="TEXT">, </field>
      </block>
      </value>
      </block>
      </value>
      </block>
      </value>
      <next>
      <block type="debug" id="?kCvR1(+E-80XDRa}LF">
      <field name="Severity">log</field>
      <value name="TEXT">
      <shadow type="text" id=";NP:_}HY$z/x{qk6#HMr">
      <field name="TEXT">test</field>
      </shadow>
      <block type="text_join" id="EVjg^P,wVQ
      p@lnY)n7/">
      <mutation items="2"></mutation>
      <value name="ADD0">
      <block type="text" id="o3)d}u,qxwex9.n)z^QC">
      <field name="TEXT">Online: </field>
      </block>
      </value>
      <value name="ADD1">
      <block type="lists_split" id="A$Z;6IYoAVp,Xqwi#^m"> <mutation mode="JOIN"></mutation> <field name="MODE">JOIN</field> <value name="INPUT"> <block type="variables_get" id="7B)$.vJx|N~Qv8eC(rRp"> <field name="VAR" id="2h_!zm_t0]ewai#h}K^]">true</field> </block> </value> <value name="DELIM"> <shadow type="text"> <field name="TEXT">,</field> </shadow> <block type="text" id="GClXMqE][APr@/;IDHR."> <field name="TEXT">, </field> </block> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> <block type="procedures_defcustomreturn" id="b6_!v~9#Y!k45Fl?.w," x="263" y="-562">
      <mutation statements="false">
      <arg name="id" varid="}C,`vdrOLxAOW-W^#ZQA"></arg>
      </mutation>
      <field name="NAME">getName</field>
      <field name="SCRIPT">cmV0dXJuIGdldE9iamVjdChpZCkuY29tbW9uLm5hbWU7IA==</field>
      <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
      </block>
      </xml>

      P 1 Reply Last reply Reply Quote 0
      • P
        puppet1912 @DJMarc75 last edited by

        @djmarc75 said in Stark verzögerte Triggerreaktion IDs vom Selektor:

        return getObject(id).common.name;

        Guten Abend!

        Erstmal Danke für deine Mühen. Ich habe mir mal erlaubt dein Blockly nachzubauen und die vier bis fünf mal die ich eben getestet habe, war keine großartige Verzögerung da. Bei meinem Testscript im Moment allerdings auch nicht. Es ist mir wirklich ein Rätsel.

        Deine Herangehensweise finde ich recht interessant. Welchen Vorteil hat es, vor dem Trigger den Selektor in eine Variable zu überführen?

        Eins haben unsere Scripte allerdings gemein, beide reagieren auf jede Änderung, sodass wenn bspw drei von zehn überwachten Zuständen nur wenige Millisekunden hintereinander auf false wechseln, auch mehrere Nachrichten kommen. Hier muss ich wohl an geeigneter Stelle noch etwas einbauen.

        Ich danke dir für deine Hilfe.

        Beste Grüße

        DJMarc75 paul53 2 Replies Last reply Reply Quote 0
        • DJMarc75
          DJMarc75 @puppet1912 last edited by

          @puppet1912 sagte in Stark verzögerte Triggerreaktion IDs vom Selektor:

          Welchen Vorteil hat es, vor dem Trigger den Selektor in eine Variable zu überführen?

          Dass beim Skriptstart die Variable auf den Selektor gesetzt wird und somit nicht verloren geht.

          @puppet1912 sagte in Stark verzögerte Triggerreaktion IDs vom Selektor:

          war keine großartige Verzögerung da

          Bei mir max. 1 Sekunde beim Test.

          @puppet1912 sagte in Stark verzögerte Triggerreaktion IDs vom Selektor:

          nur wenige Millisekunden hintereinander auf false wechseln

          Da ergibt sich die Frage: Warum wechseln denn diese Shellys so oft den Onlinezustand ??? Welche sind das denn ?

          P 1 Reply Last reply Reply Quote 0
          • P
            puppet1912 @DJMarc75 last edited by

            @djmarc75

            Da ergibt sich die Frage: Warum wechseln denn diese Shellys so oft den Onlinezustand ??? Welche sind das denn ?

            Das ist nicht der Regelfall, eher ein Schönheitsfehler. Ich nutze bspw 6 Shellys für meine Ventilsteuerung der Gartenbewässerung. Diese sind alle über die gleiche Sicherung abgesichert. Wenn also mal der Strom weg ist, aus welchen Gründen auch immer, wechseln gleich mehrere auf false. Beim Zuschalten des Stromes wechseln natürlich nicht alle zum exakt gleichen Zeitpunkt auf true.

            Wie gesagt, nur ein Schönheitsfehler und nicht die Regel.

            DJMarc75 1 Reply Last reply Reply Quote 0
            • DJMarc75
              DJMarc75 @puppet1912 last edited by

              @puppet1912 Könntest ja dann das ganze per CRON/Zeitplan abfragen. Nur als Idee.

              P 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @puppet1912 last edited by

                @puppet1912 sagte: Welchen Vorteil hat es, vor dem Trigger den Selektor in eine Variable zu überführen?

                Wenn das Ergebnis einer komplexe Funktion - wie Selektor - mehr als einmal verwendet wird (hier zweimal), schont es Ressourcen, wenn man eine Variable mit dem Ergebnis der Funktion füllt und dann diese verwendet.

                P 1 Reply Last reply Reply Quote 0
                • P
                  puppet1912 @DJMarc75 last edited by puppet1912

                  @djmarc75 said in Stark verzögerte Triggerreaktion IDs vom Selektor:

                  @puppet1912 Könntest ja dann das ganze per CRON/Zeitplan abfragen. Nur als Idee.

                  Mahlzeit.

                  Ja das eine sehr gute Idee. Danke dir.

                  Eine Änderung werde ich auch noch vornehmen müssen. Der Datenpunkt des Shellys welcher den Onlinestatus ausgibt, hat als Namen ebenfalls nur "online". Sinnvoll wäre es aber, den Namen des eigentlichen Devices auzugeben, denn diese enthält gleichzeitig das Ventil welches angesteuert wird.
                  Könnte man das direkt über eine JS-Funktion realisieren?

                  Mir kam jetzt nur der Gedanke den gesamten Pfad des Online-DPs zu speichern, über "nimm-Text-Ab" die letzten Stellen zu entfernen und dann über eine weitere Funktion den Namen des so erhaltenen Devices zu ermitteln. War das verständlich wie ich das meine?

                  Grüße

                  1 Reply Last reply Reply Quote 0
                  • P
                    puppet1912 @paul53 last edited by

                    @paul53

                    Wenn das Ergebnis einer komplexe Funktion - wie Selektor - mehr als einmal verwendet wird (hier zweimal), schont es Ressourcen, wenn man eine Variable mit dem Ergebnis der Funktion füllt und dann diese verwendet.

                    Danke für die Erläuterung. Grundlegend nachvollziehbar und setze ich in verschiedenen Scripten auch so um. Bspw mit dem "Wert" des Triggers zu arbeiten.

                    Meine Frage zielte allerdings darauf ab, warum das vor dem eigentlichen Trigger passiert. Könnte man nicht auch direkt an erster Stelle innerhalb des Triggers die Variable erstellen? Oder habe ich da einen Denkfehler.

                    Grüße

                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @puppet1912 last edited by paul53

                      @puppet1912 sagte: Könnte man nicht auch direkt an erster Stelle innerhalb des Triggers die Variable erstellen?

                      Das Ergebnis des Selektors ist u.a. der Trigger.

                      @puppet1912 sagte in Stark verzögerte Triggerreaktion IDs vom Selektor:

                      Namen des eigentlichen Devices auzugeben

                      Siehe hier.

                      P 1 Reply Last reply Reply Quote 0
                      • P
                        puppet1912 @paul53 last edited by

                        @paul53 said in Stark verzögerte Triggerreaktion IDs vom Selektor:

                        @puppet1912 sagte: Könnte man nicht auch direkt an erster Stelle innerhalb des Triggers die Variable erstellen?

                        Das Ergebnis des Selektors ist u.a. der Trigger.

                        @puppet1912 sagte in Stark verzögerte Triggerreaktion IDs vom Selektor:

                        Namen des eigentlichen Devices auzugeben

                        Siehe hier.

                        Super, vielen Dank. Schau ich mir direkt mal an. Wieder ein Punkt mal Javascript zu lernen.

                        Danke und Grüße

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        758
                        Online

                        31.9k
                        Users

                        80.1k
                        Topics

                        1.3m
                        Posts

                        3
                        13
                        465
                        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