Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Timeout richtig verwenden

    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

    Timeout richtig verwenden

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

      Servus!

      Irgendwie stehe ich bisschen auf dem Schlauch: Ich möchte in mein Skript eine Abfrage einbauen, die mir mitteilt, wenn die Tauchpumpe länger, als 20 Sekunden läuft. Schon klar, daß das irgendwie mit einem Timeout geht, aber ich komme nicht drauf.
      Anbei mein Skript:

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable id="EP`a-qu0Mi)#+F^5KaM)">Tauchpumpe_aktiv?</variable>
        </variables>
        <block type="variables_set" id="vB%/(%QK-.|VB8olH+F+" x="-62" y="-137">
          <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Tauchpumpe_aktiv?</field>
          <value name="VALUE">
            <block type="logic_boolean" id="Zt3N#kbH0XjK+}5)pbJ^">
              <field name="BOOL">FALSE</field>
            </block>
          </value>
          <next>
            <block type="on" id="?*7pS-cANelnRStH5fpi">
              <field name="OID">sonoff.0.Tauchpumpe.ENERGY_Power</field>
              <field name="CONDITION">ne</field>
              <field name="ACK_CONDITION"></field>
              <statement name="STATEMENT">
                <block type="controls_if" id="*bOx]47]yxIByA#qqt3J">
                  <mutation elseif="1"></mutation>
                  <value name="IF0">
                    <block type="logic_operation" id="Z=d#73]O`zyDGC~L|Jn/" inline="false">
                      <field name="OP">AND</field>
                      <value name="A">
                        <block type="logic_compare" id=".(cUpb9mFzXnI.u`/RGu">
                          <field name="OP">GTE</field>
                          <value name="A">
                            <block type="on_source" id="+L|D9(N^L/_9p**AC4Y#">
                              <field name="ATTR">state.val</field>
                            </block>
                          </value>
                          <value name="B">
                            <block type="math_number" id="IRXiQ:Tf}.:}u-F;(J?|">
                              <field name="NUM">3</field>
                            </block>
                          </value>
                        </block>
                      </value>
                      <value name="B">
                        <block type="logic_compare" id="!+aTX:f8zpg?koPwXqU9">
                          <field name="OP">EQ</field>
                          <value name="A">
                            <block type="variables_get" id="~^+uLCVDphEA1T3csQ;4">
                              <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Tauchpumpe_aktiv?</field>
                            </block>
                          </value>
                          <value name="B">
                            <block type="logic_boolean" id="m9)+OzK@16j;{0FErZe_">
                              <field name="BOOL">FALSE</field>
                            </block>
                          </value>
                        </block>
                      </value>
                    </block>
                  </value>
                  <statement name="DO0">
                    <block type="variables_set" id="yj^]v8#=,-=xs,C$1:0m">
                      <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Tauchpumpe_aktiv?</field>
                      <value name="VALUE">
                        <block type="logic_boolean" id="c%J}.8a#0L-%7wEqRPVF">
                          <field name="BOOL">TRUE</field>
                        </block>
                      </value>
                      <next>
                        <block type="telegram" id=")43X.^NP$KHLnE,ZJK[m">
                          <field name="INSTANCE"></field>
                          <field name="LOG"></field>
                          <field name="SILENT">FALSE</field>
                          <field name="PARSEMODE">default</field>
                          <value name="MESSAGE">
                            <shadow type="text" id="B`kyTY5/jBuR@[lQA^oW">
                              <field name="TEXT">Tauchpumpe läuft</field>
                            </shadow>
                          </value>
                        </block>
                      </next>
                    </block>
                  </statement>
                  <value name="IF1">
                    <block type="logic_operation" id="ypsA%)wGaJm%m/NKb;=i" inline="false">
                      <field name="OP">AND</field>
                      <value name="A">
                        <block type="logic_operation" id="BJcJfH;;~Zs!Cb;|si9H">
                          <field name="OP">AND</field>
                          <value name="A">
                            <block type="logic_compare" id="`of^ix$+JJ:q+jB]LuGW">
                              <field name="OP">LT</field>
                              <value name="A">
                                <block type="on_source" id="%%:?,%fLZ^rP#abOHUuC">
                                  <field name="ATTR">state.val</field>
                                </block>
                              </value>
                              <value name="B">
                                <block type="math_number" id="}xv`$j.L]mt%:X1mr]{E">
                                  <field name="NUM">3</field>
                                </block>
                              </value>
                            </block>
                          </value>
                          <value name="B">
                            <block type="logic_compare" id="RAy_B|_N=),^/yP4_=go">
                              <field name="OP">GT</field>
                              <value name="A">
                                <block type="on_source" id="iz,6l+`khcZXn548=_mG">
                                  <field name="ATTR">state.val</field>
                                </block>
                              </value>
                              <value name="B">
                                <block type="math_number" id="6g$-XC4nL#:SQe2k#6MS">
                                  <field name="NUM">0</field>
                                </block>
                              </value>
                            </block>
                          </value>
                        </block>
                      </value>
                      <value name="B">
                        <block type="logic_compare" id="Q+6~nu9t9);pkS12`.AL">
                          <field name="OP">EQ</field>
                          <value name="A">
                            <block type="variables_get" id="cpnf;Gi35/{P3:nPjq[W">
                              <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Tauchpumpe_aktiv?</field>
                            </block>
                          </value>
                          <value name="B">
                            <block type="logic_boolean" id="J57c)XE#PG(Da`u;jg#,">
                              <field name="BOOL">TRUE</field>
                            </block>
                          </value>
                        </block>
                      </value>
                    </block>
                  </value>
                  <statement name="DO1">
                    <block type="variables_set" id=":eS4G4/zu.ky;:[2FzJN">
                      <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Tauchpumpe_aktiv?</field>
                      <value name="VALUE">
                        <block type="logic_boolean" id="ly}z},:j05vr{-G[6+~L">
                          <field name="BOOL">FALSE</field>
                        </block>
                      </value>
                      <next>
                        <block type="telegram" id="9?I2K.J*.|N*=,2aN+V_">
                          <field name="INSTANCE"></field>
                          <field name="LOG"></field>
                          <field name="SILENT">FALSE</field>
                          <field name="PARSEMODE">default</field>
                          <value name="MESSAGE">
                            <shadow type="text" id="m0]cKJ`QA.tao?AAm`!P">
                              <field name="TEXT">Tauchpumpe fertig</field>
                            </shadow>
                          </value>
                        </block>
                      </next>
                    </block>
                  </statement>
                </block>
              </statement>
            </block>
          </next>
        </block>
      </xml>
      

      Danke Euch!

      K 1 Reply Last reply Reply Quote 0
      • K
        klassisch Most Active @invidianer last edited by

        @invidianer schau mal, dort https://forum.iobroker.net/post/110978 ist das für Jscript beschrieben. Das was innerhalb der function steht, wird nach Ablauf der Zeit ausgeführt. Ist etwas ungewöhnlich, weil das dann vor der timeout-Zeit steht und nicht danach.

        I 1 Reply Last reply Reply Quote 0
        • I
          invidianer @klassisch last edited by

          @klassisch
          Danke! Das ist je bestimmt geil, wenn man es versteht 🐶
          Kann man das in Blockly denn gar nicht machen? Wofür gibt es in Blockly dann diese olivefarbenen "timeout"-Dinger?

          K 1 Reply Last reply Reply Quote 0
          • K
            klassisch Most Active @invidianer last edited by klassisch

            @invidianer vielleicht so; Mein erstes Blockly.
            4901238b-8b91-46dd-ae88-0f1b82fd0303-image.png

            schickt nach 5 Sekunden eine Mail. Führt nach 5 Sekunden das aus, was innerhalb der "Zange" ist,

            1 Reply Last reply Reply Quote 0
            • I
              invidianer last edited by invidianer

              Hilft mir leider nicht weiter.
              Hier mein Blockly als Bild.

              Bildschirmfoto 2021-02-02 um 20.03.59.jpg

              Im erstren "mache"-Bereich muß geprüft werden, ob die Pumpe länger, als 20 Sekunden läiuft.

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

                @invidianer sagte: Im erstren "mache"-Bereich muß geprüft werden, ob die Pumpe länger, als 20 Sekunden läiuft.

                Bild_2021-02-02_200739.png

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

                  @invidianer
                  Durch Prüfung der Variable timeout lässt es sich vereinfachen.

                  Bild_2021-02-02_202228.png

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

                    @paul53

                    Cool, danke!!

                    Wen wir nochmal MEINE Version (der Einfachheit) nehmen:
                    Dann ist es also so, daß der aktuelle "Durchlauf" innerhalb der "mache"-Zange (Tauchpumpe aktiv) unterbrochen wird, sobald sich der Stromverbrauch wieder unter 3 Watt befindet und dann die "mache"-Zange für Tauchpumpe inaktiv abgearbeitet wird?
                    Ich war davon ausgegangen, daß die "mache"-Zange (Tauchpumpe aktiv) auf jeden Fall zuerst mal komplett ausgeführt wird, also auch der Timeout unabhängig davon, ob sich der Stromverbrauch mittlerweile geändert hat. Dem ist also nicht so?

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

                      @invidianer sagte: der aktuelle "Durchlauf" innerhalb der "mache"-Zange (Tauchpumpe aktiv) unterbrochen wird, sobald sich der Stromverbrauch wieder unter 3 Watt befindet

                      Nein, es wird nichts unterbrochen: Der Timeout läuft weiter, wenn er nicht im sonst-Zweig gestoppt wird.

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

                        @paul53
                        Hmm, das bedeutet, auch, wenn die Pumpe nach 5 Sekunden längst fertig ist, wartet er erst insgesamt 20 Sekunden und meldet erst dann, daß sie fertig ist?

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

                          @invidianer sagte: wenn die Pumpe nach 5 Sekunden längst fertig ist, wartet er erst insgesamt 20 Sekunden und meldet erst dann, daß sie fertig ist?

                          Nein, die Verzögerung wirkt nur auf die Meldung, dass die Pumpe seit 20 s läuft.

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          748
                          Online

                          31.8k
                          Users

                          80.0k
                          Topics

                          1.3m
                          Posts

                          blockly
                          3
                          11
                          287
                          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