Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Timerstop Javascript/Blockly bei Funktionsaufruf

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    14
    1
    184

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

Timerstop Javascript/Blockly bei Funktionsaufruf

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascriptnode-redblockly
10 Beiträge 3 Kommentatoren 926 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    moskito_91
    schrieb am zuletzt editiert von
    #1

    Hallo Zusammen,
    ich bräuchte bitte Hilfe bei meinem Problem. Ich wohne seid 2 Wochen in meinem Neubau und habe langsam angefangen zu coden. Problem ist : Javascript ist Neuland für mich.
    Vielleicht kann mir ein etwas erfahrender Entwickler bei meinem Problem helfen.

    Erstmal zum Code:

    /* Deklaration Timer */
    var Jalousie_Timer_JaEs1;
    var Jalousie_Timer_JaEs2;
    /*Esszimmer2*/
    on({id: "node-red.0.DI.3Wo1_3"/*node-red.0.DI.3Wo1_3*/, change: "gt"}, function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      Jalousie(getState("node-red.0.DI.3Wo1_3").val, getState("node-red.0.DI.3Wo1_4").val, 'node-red.0.DO.JaEs2Ho', 'node-red.0.DO.JaEs2Ru', Jalousie_Timer_JaEs1);
      Jalousie(getState("node-red.0.DI.3Wo1_3").val, getState("node-red.0.DI.3Wo1_4").val, 'node-red.0.DO.JaEs3Ho', 'node-red.0.DO.JaEs3Ru', Jalousie_Timer_JaEs2);
    });
    on({id: "node-red.0.DI.3Wo1_4"/*node-red.0.DI.3Wo1_4*/, change: "gt"}, function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      Jalousie(getState("node-red.0.DI.3Wo1_4").val, getState("node-red.0.DI.3Wo1_3").val, 'node-red.0.DO.JaEs2Ru', 'node-red.0.DO.JaEs2Ho', Jalousie_Timer_JaEs1);
      Jalousie(getState("node-red.0.DI.3Wo1_4").val, getState("node-red.0.DI.3Wo1_3").val, 'node-red.0.DO.JaEs3Ru', 'node-red.0.DO.JaEs3Ho', Jalousie_Timer_JaEs2);
    });
    
    var Jalousie_Eingang, Jalousie_Eingang_Sperren, Jalousie_Ausgang, Jalousie_Ausgang_Sperren, Jalousie_Timer;
    
    /**
     * Beschreibe diese Funktion …
     */
    function Jalousie(Jalousie_Eingang, Jalousie_Eingang_Sperren, Jalousie_Ausgang, Jalousie_Ausgang_Sperren, Jalousie_Timer) {
      if (getState(Jalousie_Ausgang_Sperren).val != '1') {
        setStateDelayed(Jalousie_Ausgang, (getState(Jalousie_Ausgang).val == '1' ? '0' : '1'), false, parseInt(0, 10), false);
         console.log('Debug1');
        (function () {if (Jalousie_Timer) {clearTimeout(Jalousie_Timer); Jalousie_Timer = null;}})();
        Jalousie_Timer = setTimeout(function () {
          setStateDelayed(Jalousie_Ausgang, '0', false, parseInt(0, 10), false);
           console.log('Debug2');
           (function () {if (Jalousie_Timer) {clearTimeout(Jalousie_Timer); Jalousie_Timer = null;}})();
        }, 20000);
      } else {
        (function () {if (Jalousie_Timer) {clearTimeout(Jalousie_Timer); Jalousie_Timer = null;}})();
        setStateDelayed(Jalousie_Ausgang_Sperren, '0', false, parseInt(0, 10), false);
        console.log('Debug3');
      }
    }
    
    

    Mit dem Code im 1. Schnippsel wird die Jalousiefunktion im 2. Schnippsel aufgerufen. Ein Timer wird gestartet. Wenn ich jetzt die Taster/Eingänge öfter hin und herschalte, kann ich an den Debug Variablen sehen, dass die Timer nicht gestoppt wurden sondern weitergelaufen sind. Ich habe heute schon etliche Zeit damit verbracht zu verstehen, warum ich vor diesem Problem stehe. Leider bin ich zu keiner Lösung gekommen und brauche deshalb hilfe.

    Wäre eventuell jemand so nett von euch, mich auf den Fehler hinzuweisen?

    Grüße
    MJ

    M 1 Antwort Letzte Antwort
    0
    • M moskito_91

      Hallo Zusammen,
      ich bräuchte bitte Hilfe bei meinem Problem. Ich wohne seid 2 Wochen in meinem Neubau und habe langsam angefangen zu coden. Problem ist : Javascript ist Neuland für mich.
      Vielleicht kann mir ein etwas erfahrender Entwickler bei meinem Problem helfen.

      Erstmal zum Code:

      /* Deklaration Timer */
      var Jalousie_Timer_JaEs1;
      var Jalousie_Timer_JaEs2;
      /*Esszimmer2*/
      on({id: "node-red.0.DI.3Wo1_3"/*node-red.0.DI.3Wo1_3*/, change: "gt"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        Jalousie(getState("node-red.0.DI.3Wo1_3").val, getState("node-red.0.DI.3Wo1_4").val, 'node-red.0.DO.JaEs2Ho', 'node-red.0.DO.JaEs2Ru', Jalousie_Timer_JaEs1);
        Jalousie(getState("node-red.0.DI.3Wo1_3").val, getState("node-red.0.DI.3Wo1_4").val, 'node-red.0.DO.JaEs3Ho', 'node-red.0.DO.JaEs3Ru', Jalousie_Timer_JaEs2);
      });
      on({id: "node-red.0.DI.3Wo1_4"/*node-red.0.DI.3Wo1_4*/, change: "gt"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        Jalousie(getState("node-red.0.DI.3Wo1_4").val, getState("node-red.0.DI.3Wo1_3").val, 'node-red.0.DO.JaEs2Ru', 'node-red.0.DO.JaEs2Ho', Jalousie_Timer_JaEs1);
        Jalousie(getState("node-red.0.DI.3Wo1_4").val, getState("node-red.0.DI.3Wo1_3").val, 'node-red.0.DO.JaEs3Ru', 'node-red.0.DO.JaEs3Ho', Jalousie_Timer_JaEs2);
      });
      
      var Jalousie_Eingang, Jalousie_Eingang_Sperren, Jalousie_Ausgang, Jalousie_Ausgang_Sperren, Jalousie_Timer;
      
      /**
       * Beschreibe diese Funktion …
       */
      function Jalousie(Jalousie_Eingang, Jalousie_Eingang_Sperren, Jalousie_Ausgang, Jalousie_Ausgang_Sperren, Jalousie_Timer) {
        if (getState(Jalousie_Ausgang_Sperren).val != '1') {
          setStateDelayed(Jalousie_Ausgang, (getState(Jalousie_Ausgang).val == '1' ? '0' : '1'), false, parseInt(0, 10), false);
           console.log('Debug1');
          (function () {if (Jalousie_Timer) {clearTimeout(Jalousie_Timer); Jalousie_Timer = null;}})();
          Jalousie_Timer = setTimeout(function () {
            setStateDelayed(Jalousie_Ausgang, '0', false, parseInt(0, 10), false);
             console.log('Debug2');
             (function () {if (Jalousie_Timer) {clearTimeout(Jalousie_Timer); Jalousie_Timer = null;}})();
          }, 20000);
        } else {
          (function () {if (Jalousie_Timer) {clearTimeout(Jalousie_Timer); Jalousie_Timer = null;}})();
          setStateDelayed(Jalousie_Ausgang_Sperren, '0', false, parseInt(0, 10), false);
          console.log('Debug3');
        }
      }
      
      

      Mit dem Code im 1. Schnippsel wird die Jalousiefunktion im 2. Schnippsel aufgerufen. Ein Timer wird gestartet. Wenn ich jetzt die Taster/Eingänge öfter hin und herschalte, kann ich an den Debug Variablen sehen, dass die Timer nicht gestoppt wurden sondern weitergelaufen sind. Ich habe heute schon etliche Zeit damit verbracht zu verstehen, warum ich vor diesem Problem stehe. Leider bin ich zu keiner Lösung gekommen und brauche deshalb hilfe.

      Wäre eventuell jemand so nett von euch, mich auf den Fehler hinzuweisen?

      Grüße
      MJ

      M Online
      M Online
      MCU
      schrieb am zuletzt editiert von
      #2

      @moskito_91 Kannst du auch bitte die Blockly-Variante zeigen, ist manchmal etwas schneller etwas zu erkennen. Danke.

      NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
      Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

      M 1 Antwort Letzte Antwort
      0
      • M MCU

        @moskito_91 Kannst du auch bitte die Blockly-Variante zeigen, ist manchmal etwas schneller etwas zu erkennen. Danke.

        M Offline
        M Offline
        moskito_91
        schrieb am zuletzt editiert von
        #3

        @MCU
        Hallo,
        hier der Code:

        <xml xmlns="http://www.w3.org/1999/xhtml">
          <variables>
            <variable type="" id="OcSb~h-|M}h^mcd?qV9s">Jalousie_Eingang</variable>
            <variable type="" id="9ak)aO0Dl0=g3X-sB/0e">Jalousie_Eingang_Sperren</variable>
            <variable type="" id="]xbhWAyPZt`9SaOn[1%[">Jalousie_Ausgang</variable>
            <variable type="" id="+hnMf#Jk=eutvR?Mh*VB">Jalousie_Ausgang_Sperren</variable>
            <variable type="undefined" id="Jalousie_Timer">Jalousie_Timer</variable>
          </variables>
          <block type="on" id=".|!7/K$7qOkO^DlH)$G0" x="53" y="51">
            <field name="OID">node-red.0.JaRu</field>
            <field name="CONDITION">gt</field>
            <field name="ACK_CONDITION"></field>
            <statement name="STATEMENT">
              <block type="procedures_callnoreturn" id="!|~Yx,.gc|2L]Z(ic(9h">
                <mutation name="Jalousie">
                  <arg name="Jalousie_Eingang"></arg>
                  <arg name="Jalousie_Eingang_Sperren"></arg>
                  <arg name="Jalousie_Ausgang"></arg>
                  <arg name="Jalousie_Ausgang_Sperren"></arg>
                </mutation>
                <value name="ARG0">
                  <block type="get_value" id="gP:Jt7Nt}zhmthu*euOf">
                    <field name="ATTR">val</field>
                    <field name="OID">node-red.0.JaRu</field>
                  </block>
                </value>
                <value name="ARG1">
                  <block type="get_value" id="Pd,BI5b8`H-mc$8!}Apj">
                    <field name="ATTR">val</field>
                    <field name="OID">node-red.0.JaHo</field>
                  </block>
                </value>
                <value name="ARG2">
                  <block type="field_oid" id="^Y%M$_).W,kcNi:D`20c">
                    <field name="oid">node-red.0.DO.JaKid1Ru</field>
                  </block>
                </value>
                <value name="ARG3">
                  <block type="field_oid" id="_pgOIw!Wa=+?xPskwtjZ">
                    <field name="oid">node-red.0.DO.JaKid1Ho</field>
                  </block>
                </value>
              </block>
            </statement>
            <next>
              <block type="on" id="g3U(K@HI}jpU/Jt`dCut">
                <field name="OID">node-red.0.JaHo</field>
                <field name="CONDITION">gt</field>
                <field name="ACK_CONDITION"></field>
                <statement name="STATEMENT">
                  <block type="procedures_callnoreturn" id="L2c+_:0kb1s)-Jjr/MWS">
                    <mutation name="Jalousie">
                      <arg name="Jalousie_Eingang"></arg>
                      <arg name="Jalousie_Eingang_Sperren"></arg>
                      <arg name="Jalousie_Ausgang"></arg>
                      <arg name="Jalousie_Ausgang_Sperren"></arg>
                    </mutation>
                    <value name="ARG0">
                      <block type="get_value" id="gahI/IyF~7q0L`?yJ/V.">
                        <field name="ATTR">val</field>
                        <field name="OID">node-red.0.JaHo</field>
                      </block>
                    </value>
                    <value name="ARG1">
                      <block type="get_value" id="ge0zl/~$.lU?a)DL=t20">
                        <field name="ATTR">val</field>
                        <field name="OID">node-red.0.JaRu</field>
                      </block>
                    </value>
                    <value name="ARG2">
                      <block type="field_oid" id="nyr-!`CMD;K-+cEnG[b)">
                        <field name="oid">node-red.0.DO.JaKid1Ho</field>
                      </block>
                    </value>
                    <value name="ARG3">
                      <block type="field_oid" id="{Md?XdYQa%MAJ/~V{B%D">
                        <field name="oid">node-red.0.DO.JaKid1Ru</field>
                      </block>
                    </value>
                  </block>
                </statement>
              </block>
            </next>
          </block>
          <block type="procedures_defnoreturn" id=";wOA%a=5;3qoLrdh{6Y)" x="713" y="163">
            <mutation>
              <arg name="Jalousie_Eingang" varid="OcSb~h-|M}h^mcd?qV9s"></arg>
              <arg name="Jalousie_Eingang_Sperren" varid="9ak)aO0Dl0=g3X-sB/0e"></arg>
              <arg name="Jalousie_Ausgang" varid="]xbhWAyPZt`9SaOn[1%["></arg>
              <arg name="Jalousie_Ausgang_Sperren" varid="+hnMf#Jk=eutvR?Mh*VB"></arg>
            </mutation>
            <field name="NAME">Jalousie</field>
            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
            <statement name="STACK">
              <block type="controls_if" id="]^gu;^w}Xx)#z(oGNj(X">
                <mutation else="1"></mutation>
                <value name="IF0">
                  <block type="logic_compare" id="f63LVhMaW2hIgaIC(?fC">
                    <field name="OP">NEQ</field>
                    <value name="A">
                      <block type="get_value_var" id="5qPy9UBV85gVcLPL4xy[">
                        <field name="ATTR">val</field>
                        <value name="OID">
                          <shadow type="text" id="@~/sj$5wAl=z@;Wm^)oQ">
                            <field name="TEXT"></field>
                          </shadow>
                          <block type="variables_get" id=")O5~;#f#byjP-UPNV:t$">
                            <field name="VAR" id="+hnMf#Jk=eutvR?Mh*VB" variabletype="">Jalousie_Ausgang_Sperren</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <value name="B">
                      <block type="text" id="W$cyo}^Q_w)vrWUam-Zb">
                        <field name="TEXT">1</field>
                      </block>
                    </value>
                  </block>
                </value>
                <statement name="DO0">
                  <block type="control_ex" id="HaZbwh_}9`Mx8{I,8m/P">
                    <field name="TYPE">false</field>
                    <field name="CLEAR_RUNNING">FALSE</field>
                    <value name="OID">
                      <shadow type="field_oid" id="y7eV4`(+,:Dz~z:38ZzG">
                        <field name="oid">Object ID</field>
                      </shadow>
                      <block type="variables_get" id="xmE*)C;/{MAW0G1#5of@">
                        <field name="VAR" id="]xbhWAyPZt`9SaOn[1%[" variabletype="">Jalousie_Ausgang</field>
                      </block>
                    </value>
                    <value name="VALUE">
                      <shadow type="logic_boolean" id="}yYX8xX)4AP~`HT)Z`hY">
                        <field name="BOOL">TRUE</field>
                      </shadow>
                      <block type="logic_ternary" id="=D$_a}m;S/WDA*1KL.*c">
                        <value name="IF">
                          <block type="logic_compare" id="FSHcuQ1X-IQNHTP;mfho">
                            <field name="OP">EQ</field>
                            <value name="A">
                              <block type="get_value_var" id="$|8TnVh(G!GYgjwtU8n.">
                                <field name="ATTR">val</field>
                                <value name="OID">
                                  <shadow type="text" id="@~/sj$5wAl=z@;Wm^)oQ">
                                    <field name="TEXT"></field>
                                  </shadow>
                                  <block type="variables_get" id="H]jR5}!23OSB~xUJlca.">
                                    <field name="VAR" id="]xbhWAyPZt`9SaOn[1%[" variabletype="">Jalousie_Ausgang</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <value name="B">
                              <block type="text" id="z,s[XAi+1ZHo=,)}QcyJ">
                                <field name="TEXT">1</field>
                              </block>
                            </value>
                          </block>
                        </value>
                        <value name="THEN">
                          <block type="text" id="ZFblK@at84?stG~`H-zP">
                            <field name="TEXT">0</field>
                          </block>
                        </value>
                        <value name="ELSE">
                          <block type="text" id="e%e[A=Q[=d]jiAyb{,}P">
                            <field name="TEXT">1</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <value name="DELAY_MS">
                      <shadow type="math_number" id="l-5Sc4Za$qD3p;PeQIuT">
                        <field name="NUM">0</field>
                      </shadow>
                    </value>
                    <next>
                      <block type="debug" id="OMebpu1++A.4$J,W;s)}">
                        <field name="Severity">log</field>
                        <value name="TEXT">
                          <shadow type="text" id=")/4PQJK}3vdh([E?F7y^">
                            <field name="TEXT">test</field>
                          </shadow>
                          <block type="text_join" id="sGxe!xX1eB`P8BAm6zRD">
                            <mutation items="2"></mutation>
                            <value name="ADD0">
                              <block type="text" id="Qnj1KjF3K@c3~AqmgX6D">
                                <field name="TEXT">Jal_O1: </field>
                              </block>
                            </value>
                            <value name="ADD1">
                              <block type="get_value_var" id="PJxpTw=~*a]J0JDrDdjL">
                                <field name="ATTR">val</field>
                                <value name="OID">
                                  <shadow type="text" id="@~/sj$5wAl=z@;Wm^)oQ">
                                    <field name="TEXT"></field>
                                  </shadow>
                                  <block type="variables_get" id=")AxD4=R,0c?,eBdbBiiA">
                                    <field name="VAR" id="]xbhWAyPZt`9SaOn[1%[" variabletype="">Jalousie_Ausgang</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                          </block>
                        </value>
                        <next>
                          <block type="timeouts_cleartimeout" id="si:J.xTy53%|D^JofQ,^">
                            <field name="NAME">Jalousie_Timer</field>
                            <next>
                              <block type="timeouts_settimeout" id="^gGlQTQf:?vlzLQk;43%">
                                <field name="NAME">Jalousie_Timer</field>
                                <field name="DELAY">20000</field>
                                <field name="UNIT">ms</field>
                                <statement name="STATEMENT">
                                  <block type="control_ex" id="Hly2:B(b%z!x.TIh36tq">
                                    <field name="TYPE">false</field>
                                    <field name="CLEAR_RUNNING">FALSE</field>
                                    <value name="OID">
                                      <shadow type="field_oid" id="^s2ajcKCNd|^%b62Z(yK">
                                        <field name="oid">Object ID</field>
                                      </shadow>
                                      <block type="variables_get" id="/pO!Fg3ORF$%N5}hECTD">
                                        <field name="VAR" id="]xbhWAyPZt`9SaOn[1%[" variabletype="">Jalousie_Ausgang</field>
                                      </block>
                                    </value>
                                    <value name="VALUE">
                                      <shadow type="logic_boolean" id="}yYX8xX)4AP~`HT)Z`hY">
                                        <field name="BOOL">TRUE</field>
                                      </shadow>
                                      <block type="text" id="]xpPjeVOGnDLG/gTc?2u">
                                        <field name="TEXT">0</field>
                                      </block>
                                    </value>
                                    <value name="DELAY_MS">
                                      <shadow type="math_number" id="Sk$Y4QB!=TAJ)4`yU+w=">
                                        <field name="NUM">0</field>
                                      </shadow>
                                    </value>
                                    <next>
                                      <block type="debug" id="*[g5az{J5d$[v`by20RO">
                                        <field name="Severity">log</field>
                                        <value name="TEXT">
                                          <shadow type="text" id="yzc}!wq~N,Td=VcmS2H0">
                                            <field name="TEXT">test</field>
                                          </shadow>
                                          <block type="text_join" id="xXuOIvs=!jA3nYE_?yT#">
                                            <mutation items="2"></mutation>
                                            <value name="ADD0">
                                              <block type="text" id="A#%PFa)}vZLW.59{bP2R">
                                                <field name="TEXT">Jal_O2: </field>
                                              </block>
                                            </value>
                                            <value name="ADD1">
                                              <block type="get_value_var" id="Y@zmGys[7:-/KRL_/-OJ">
                                                <field name="ATTR">val</field>
                                                <value name="OID">
                                                  <shadow type="text" id="@~/sj$5wAl=z@;Wm^)oQ">
                                                    <field name="TEXT"></field>
                                                  </shadow>
                                                  <block type="variables_get" id="](TcC%~`q`m%g*PIMuk+">
                                                    <field name="VAR" id="]xbhWAyPZt`9SaOn[1%[" variabletype="">Jalousie_Ausgang</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                      </block>
                                    </next>
                                  </block>
                                </statement>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </statement>
                <statement name="ELSE">
                  <block type="timeouts_cleartimeout" id="ho_}%RKN9WKJKn!1B;$O">
                    <field name="NAME">Jalousie_Timer</field>
                    <next>
                      <block type="control_ex" id="84LbanBMGvM%2u6$HfgO">
                        <field name="TYPE">false</field>
                        <field name="CLEAR_RUNNING">FALSE</field>
                        <value name="OID">
                          <shadow type="field_oid" id="nbyg:8x)FA*-%_/51;ry">
                            <field name="oid">Object ID</field>
                          </shadow>
                          <block type="variables_get" id="JYRx?Wd/TOsCA-[NB0Pj">
                            <field name="VAR" id="+hnMf#Jk=eutvR?Mh*VB" variabletype="">Jalousie_Ausgang_Sperren</field>
                          </block>
                        </value>
                        <value name="VALUE">
                          <shadow type="logic_boolean" id="tbqG+~gW+LIqHm~U{Y:W">
                            <field name="BOOL">TRUE</field>
                          </shadow>
                          <block type="text" id=",=*r](%-Tw?^Hu2`eU~o">
                            <field name="TEXT">0</field>
                          </block>
                        </value>
                        <value name="DELAY_MS">
                          <shadow type="math_number" id="FYpds4u3.l9xI}S?|XfH">
                            <field name="NUM">0</field>
                          </shadow>
                        </value>
                        <next>
                          <block type="debug" id="*J_1D$?6yFZlmsZ.pn#c">
                            <field name="Severity">log</field>
                            <value name="TEXT">
                              <shadow type="text" id="]pHIRO/x#j?~TYIJ}_*|">
                                <field name="TEXT">test</field>
                              </shadow>
                              <block type="text_join" id="XEEnmBHk-1FjeEK@*)#4">
                                <mutation items="2"></mutation>
                                <value name="ADD0">
                                  <block type="text" id="SepE$o:uqd^^$],L{u|}">
                                    <field name="TEXT">Jal_O3: </field>
                                  </block>
                                </value>
                                <value name="ADD1">
                                  <block type="get_value_var" id="HTc?6x|Y+svKEG]VU-w|">
                                    <field name="ATTR">val</field>
                                    <value name="OID">
                                      <shadow type="text" id="@~/sj$5wAl=z@;Wm^)oQ">
                                        <field name="TEXT"></field>
                                      </shadow>
                                      <block type="variables_get" id="/?tF?6WHe+BYY.gz$utg">
                                        <field name="VAR" id="]xbhWAyPZt`9SaOn[1%[" variabletype="">Jalousie_Ausgang</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                              </block>
                            </value>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </statement>
              </block>
            </statement>
          </block>
        </xml>
        
        AsgothianA 1 Antwort Letzte Antwort
        0
        • M moskito_91

          @MCU
          Hallo,
          hier der Code:

          <xml xmlns="http://www.w3.org/1999/xhtml">
            <variables>
              <variable type="" id="OcSb~h-|M}h^mcd?qV9s">Jalousie_Eingang</variable>
              <variable type="" id="9ak)aO0Dl0=g3X-sB/0e">Jalousie_Eingang_Sperren</variable>
              <variable type="" id="]xbhWAyPZt`9SaOn[1%[">Jalousie_Ausgang</variable>
              <variable type="" id="+hnMf#Jk=eutvR?Mh*VB">Jalousie_Ausgang_Sperren</variable>
              <variable type="undefined" id="Jalousie_Timer">Jalousie_Timer</variable>
            </variables>
            <block type="on" id=".|!7/K$7qOkO^DlH)$G0" x="53" y="51">
              <field name="OID">node-red.0.JaRu</field>
              <field name="CONDITION">gt</field>
              <field name="ACK_CONDITION"></field>
              <statement name="STATEMENT">
                <block type="procedures_callnoreturn" id="!|~Yx,.gc|2L]Z(ic(9h">
                  <mutation name="Jalousie">
                    <arg name="Jalousie_Eingang"></arg>
                    <arg name="Jalousie_Eingang_Sperren"></arg>
                    <arg name="Jalousie_Ausgang"></arg>
                    <arg name="Jalousie_Ausgang_Sperren"></arg>
                  </mutation>
                  <value name="ARG0">
                    <block type="get_value" id="gP:Jt7Nt}zhmthu*euOf">
                      <field name="ATTR">val</field>
                      <field name="OID">node-red.0.JaRu</field>
                    </block>
                  </value>
                  <value name="ARG1">
                    <block type="get_value" id="Pd,BI5b8`H-mc$8!}Apj">
                      <field name="ATTR">val</field>
                      <field name="OID">node-red.0.JaHo</field>
                    </block>
                  </value>
                  <value name="ARG2">
                    <block type="field_oid" id="^Y%M$_).W,kcNi:D`20c">
                      <field name="oid">node-red.0.DO.JaKid1Ru</field>
                    </block>
                  </value>
                  <value name="ARG3">
                    <block type="field_oid" id="_pgOIw!Wa=+?xPskwtjZ">
                      <field name="oid">node-red.0.DO.JaKid1Ho</field>
                    </block>
                  </value>
                </block>
              </statement>
              <next>
                <block type="on" id="g3U(K@HI}jpU/Jt`dCut">
                  <field name="OID">node-red.0.JaHo</field>
                  <field name="CONDITION">gt</field>
                  <field name="ACK_CONDITION"></field>
                  <statement name="STATEMENT">
                    <block type="procedures_callnoreturn" id="L2c+_:0kb1s)-Jjr/MWS">
                      <mutation name="Jalousie">
                        <arg name="Jalousie_Eingang"></arg>
                        <arg name="Jalousie_Eingang_Sperren"></arg>
                        <arg name="Jalousie_Ausgang"></arg>
                        <arg name="Jalousie_Ausgang_Sperren"></arg>
                      </mutation>
                      <value name="ARG0">
                        <block type="get_value" id="gahI/IyF~7q0L`?yJ/V.">
                          <field name="ATTR">val</field>
                          <field name="OID">node-red.0.JaHo</field>
                        </block>
                      </value>
                      <value name="ARG1">
                        <block type="get_value" id="ge0zl/~$.lU?a)DL=t20">
                          <field name="ATTR">val</field>
                          <field name="OID">node-red.0.JaRu</field>
                        </block>
                      </value>
                      <value name="ARG2">
                        <block type="field_oid" id="nyr-!`CMD;K-+cEnG[b)">
                          <field name="oid">node-red.0.DO.JaKid1Ho</field>
                        </block>
                      </value>
                      <value name="ARG3">
                        <block type="field_oid" id="{Md?XdYQa%MAJ/~V{B%D">
                          <field name="oid">node-red.0.DO.JaKid1Ru</field>
                        </block>
                      </value>
                    </block>
                  </statement>
                </block>
              </next>
            </block>
            <block type="procedures_defnoreturn" id=";wOA%a=5;3qoLrdh{6Y)" x="713" y="163">
              <mutation>
                <arg name="Jalousie_Eingang" varid="OcSb~h-|M}h^mcd?qV9s"></arg>
                <arg name="Jalousie_Eingang_Sperren" varid="9ak)aO0Dl0=g3X-sB/0e"></arg>
                <arg name="Jalousie_Ausgang" varid="]xbhWAyPZt`9SaOn[1%["></arg>
                <arg name="Jalousie_Ausgang_Sperren" varid="+hnMf#Jk=eutvR?Mh*VB"></arg>
              </mutation>
              <field name="NAME">Jalousie</field>
              <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
              <statement name="STACK">
                <block type="controls_if" id="]^gu;^w}Xx)#z(oGNj(X">
                  <mutation else="1"></mutation>
                  <value name="IF0">
                    <block type="logic_compare" id="f63LVhMaW2hIgaIC(?fC">
                      <field name="OP">NEQ</field>
                      <value name="A">
                        <block type="get_value_var" id="5qPy9UBV85gVcLPL4xy[">
                          <field name="ATTR">val</field>
                          <value name="OID">
                            <shadow type="text" id="@~/sj$5wAl=z@;Wm^)oQ">
                              <field name="TEXT"></field>
                            </shadow>
                            <block type="variables_get" id=")O5~;#f#byjP-UPNV:t$">
                              <field name="VAR" id="+hnMf#Jk=eutvR?Mh*VB" variabletype="">Jalousie_Ausgang_Sperren</field>
                            </block>
                          </value>
                        </block>
                      </value>
                      <value name="B">
                        <block type="text" id="W$cyo}^Q_w)vrWUam-Zb">
                          <field name="TEXT">1</field>
                        </block>
                      </value>
                    </block>
                  </value>
                  <statement name="DO0">
                    <block type="control_ex" id="HaZbwh_}9`Mx8{I,8m/P">
                      <field name="TYPE">false</field>
                      <field name="CLEAR_RUNNING">FALSE</field>
                      <value name="OID">
                        <shadow type="field_oid" id="y7eV4`(+,:Dz~z:38ZzG">
                          <field name="oid">Object ID</field>
                        </shadow>
                        <block type="variables_get" id="xmE*)C;/{MAW0G1#5of@">
                          <field name="VAR" id="]xbhWAyPZt`9SaOn[1%[" variabletype="">Jalousie_Ausgang</field>
                        </block>
                      </value>
                      <value name="VALUE">
                        <shadow type="logic_boolean" id="}yYX8xX)4AP~`HT)Z`hY">
                          <field name="BOOL">TRUE</field>
                        </shadow>
                        <block type="logic_ternary" id="=D$_a}m;S/WDA*1KL.*c">
                          <value name="IF">
                            <block type="logic_compare" id="FSHcuQ1X-IQNHTP;mfho">
                              <field name="OP">EQ</field>
                              <value name="A">
                                <block type="get_value_var" id="$|8TnVh(G!GYgjwtU8n.">
                                  <field name="ATTR">val</field>
                                  <value name="OID">
                                    <shadow type="text" id="@~/sj$5wAl=z@;Wm^)oQ">
                                      <field name="TEXT"></field>
                                    </shadow>
                                    <block type="variables_get" id="H]jR5}!23OSB~xUJlca.">
                                      <field name="VAR" id="]xbhWAyPZt`9SaOn[1%[" variabletype="">Jalousie_Ausgang</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <value name="B">
                                <block type="text" id="z,s[XAi+1ZHo=,)}QcyJ">
                                  <field name="TEXT">1</field>
                                </block>
                              </value>
                            </block>
                          </value>
                          <value name="THEN">
                            <block type="text" id="ZFblK@at84?stG~`H-zP">
                              <field name="TEXT">0</field>
                            </block>
                          </value>
                          <value name="ELSE">
                            <block type="text" id="e%e[A=Q[=d]jiAyb{,}P">
                              <field name="TEXT">1</field>
                            </block>
                          </value>
                        </block>
                      </value>
                      <value name="DELAY_MS">
                        <shadow type="math_number" id="l-5Sc4Za$qD3p;PeQIuT">
                          <field name="NUM">0</field>
                        </shadow>
                      </value>
                      <next>
                        <block type="debug" id="OMebpu1++A.4$J,W;s)}">
                          <field name="Severity">log</field>
                          <value name="TEXT">
                            <shadow type="text" id=")/4PQJK}3vdh([E?F7y^">
                              <field name="TEXT">test</field>
                            </shadow>
                            <block type="text_join" id="sGxe!xX1eB`P8BAm6zRD">
                              <mutation items="2"></mutation>
                              <value name="ADD0">
                                <block type="text" id="Qnj1KjF3K@c3~AqmgX6D">
                                  <field name="TEXT">Jal_O1: </field>
                                </block>
                              </value>
                              <value name="ADD1">
                                <block type="get_value_var" id="PJxpTw=~*a]J0JDrDdjL">
                                  <field name="ATTR">val</field>
                                  <value name="OID">
                                    <shadow type="text" id="@~/sj$5wAl=z@;Wm^)oQ">
                                      <field name="TEXT"></field>
                                    </shadow>
                                    <block type="variables_get" id=")AxD4=R,0c?,eBdbBiiA">
                                      <field name="VAR" id="]xbhWAyPZt`9SaOn[1%[" variabletype="">Jalousie_Ausgang</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                            </block>
                          </value>
                          <next>
                            <block type="timeouts_cleartimeout" id="si:J.xTy53%|D^JofQ,^">
                              <field name="NAME">Jalousie_Timer</field>
                              <next>
                                <block type="timeouts_settimeout" id="^gGlQTQf:?vlzLQk;43%">
                                  <field name="NAME">Jalousie_Timer</field>
                                  <field name="DELAY">20000</field>
                                  <field name="UNIT">ms</field>
                                  <statement name="STATEMENT">
                                    <block type="control_ex" id="Hly2:B(b%z!x.TIh36tq">
                                      <field name="TYPE">false</field>
                                      <field name="CLEAR_RUNNING">FALSE</field>
                                      <value name="OID">
                                        <shadow type="field_oid" id="^s2ajcKCNd|^%b62Z(yK">
                                          <field name="oid">Object ID</field>
                                        </shadow>
                                        <block type="variables_get" id="/pO!Fg3ORF$%N5}hECTD">
                                          <field name="VAR" id="]xbhWAyPZt`9SaOn[1%[" variabletype="">Jalousie_Ausgang</field>
                                        </block>
                                      </value>
                                      <value name="VALUE">
                                        <shadow type="logic_boolean" id="}yYX8xX)4AP~`HT)Z`hY">
                                          <field name="BOOL">TRUE</field>
                                        </shadow>
                                        <block type="text" id="]xpPjeVOGnDLG/gTc?2u">
                                          <field name="TEXT">0</field>
                                        </block>
                                      </value>
                                      <value name="DELAY_MS">
                                        <shadow type="math_number" id="Sk$Y4QB!=TAJ)4`yU+w=">
                                          <field name="NUM">0</field>
                                        </shadow>
                                      </value>
                                      <next>
                                        <block type="debug" id="*[g5az{J5d$[v`by20RO">
                                          <field name="Severity">log</field>
                                          <value name="TEXT">
                                            <shadow type="text" id="yzc}!wq~N,Td=VcmS2H0">
                                              <field name="TEXT">test</field>
                                            </shadow>
                                            <block type="text_join" id="xXuOIvs=!jA3nYE_?yT#">
                                              <mutation items="2"></mutation>
                                              <value name="ADD0">
                                                <block type="text" id="A#%PFa)}vZLW.59{bP2R">
                                                  <field name="TEXT">Jal_O2: </field>
                                                </block>
                                              </value>
                                              <value name="ADD1">
                                                <block type="get_value_var" id="Y@zmGys[7:-/KRL_/-OJ">
                                                  <field name="ATTR">val</field>
                                                  <value name="OID">
                                                    <shadow type="text" id="@~/sj$5wAl=z@;Wm^)oQ">
                                                      <field name="TEXT"></field>
                                                    </shadow>
                                                    <block type="variables_get" id="](TcC%~`q`m%g*PIMuk+">
                                                      <field name="VAR" id="]xbhWAyPZt`9SaOn[1%[" variabletype="">Jalousie_Ausgang</field>
                                                    </block>
                                                  </value>
                                                </block>
                                              </value>
                                            </block>
                                          </value>
                                        </block>
                                      </next>
                                    </block>
                                  </statement>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </statement>
                  <statement name="ELSE">
                    <block type="timeouts_cleartimeout" id="ho_}%RKN9WKJKn!1B;$O">
                      <field name="NAME">Jalousie_Timer</field>
                      <next>
                        <block type="control_ex" id="84LbanBMGvM%2u6$HfgO">
                          <field name="TYPE">false</field>
                          <field name="CLEAR_RUNNING">FALSE</field>
                          <value name="OID">
                            <shadow type="field_oid" id="nbyg:8x)FA*-%_/51;ry">
                              <field name="oid">Object ID</field>
                            </shadow>
                            <block type="variables_get" id="JYRx?Wd/TOsCA-[NB0Pj">
                              <field name="VAR" id="+hnMf#Jk=eutvR?Mh*VB" variabletype="">Jalousie_Ausgang_Sperren</field>
                            </block>
                          </value>
                          <value name="VALUE">
                            <shadow type="logic_boolean" id="tbqG+~gW+LIqHm~U{Y:W">
                              <field name="BOOL">TRUE</field>
                            </shadow>
                            <block type="text" id=",=*r](%-Tw?^Hu2`eU~o">
                              <field name="TEXT">0</field>
                            </block>
                          </value>
                          <value name="DELAY_MS">
                            <shadow type="math_number" id="FYpds4u3.l9xI}S?|XfH">
                              <field name="NUM">0</field>
                            </shadow>
                          </value>
                          <next>
                            <block type="debug" id="*J_1D$?6yFZlmsZ.pn#c">
                              <field name="Severity">log</field>
                              <value name="TEXT">
                                <shadow type="text" id="]pHIRO/x#j?~TYIJ}_*|">
                                  <field name="TEXT">test</field>
                                </shadow>
                                <block type="text_join" id="XEEnmBHk-1FjeEK@*)#4">
                                  <mutation items="2"></mutation>
                                  <value name="ADD0">
                                    <block type="text" id="SepE$o:uqd^^$],L{u|}">
                                      <field name="TEXT">Jal_O3: </field>
                                    </block>
                                  </value>
                                  <value name="ADD1">
                                    <block type="get_value_var" id="HTc?6x|Y+svKEG]VU-w|">
                                      <field name="ATTR">val</field>
                                      <value name="OID">
                                        <shadow type="text" id="@~/sj$5wAl=z@;Wm^)oQ">
                                          <field name="TEXT"></field>
                                        </shadow>
                                        <block type="variables_get" id="/?tF?6WHe+BYY.gz$utg">
                                          <field name="VAR" id="]xbhWAyPZt`9SaOn[1%[" variabletype="">Jalousie_Ausgang</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                </block>
                              </value>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </statement>
                </block>
              </statement>
            </block>
          </xml>
          
          AsgothianA Offline
          AsgothianA Offline
          Asgothian
          Developer
          schrieb am zuletzt editiert von
          #4

          @moskito_91 du übergibst der Funktion eine Variable für den Timer Namen. Allerdings gibst du den ggf. erzeugten Timer aus der Funktion nicht zurück, so das die Variablen

          var Jalousie_Timer_JaEs1;
          var Jalousie_Timer_JaEs2;
          
          

          nie eine wert bekommen - das Handle des Timers geht verloren.

          Du musst

          • die funktionsdefinition mit Rückgabe wert nutzen
          • den wert der Variablen Jalousie_Timer zurück geben
          • den rückgabewert der variable zuweisen die du als 4. Parameter der Funktion übergibst.

          A.

          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

          M 2 Antworten Letzte Antwort
          0
          • AsgothianA Asgothian

            @moskito_91 du übergibst der Funktion eine Variable für den Timer Namen. Allerdings gibst du den ggf. erzeugten Timer aus der Funktion nicht zurück, so das die Variablen

            var Jalousie_Timer_JaEs1;
            var Jalousie_Timer_JaEs2;
            
            

            nie eine wert bekommen - das Handle des Timers geht verloren.

            Du musst

            • die funktionsdefinition mit Rückgabe wert nutzen
            • den wert der Variablen Jalousie_Timer zurück geben
            • den rückgabewert der variable zuweisen die du als 4. Parameter der Funktion übergibst.

            A.

            M Offline
            M Offline
            moskito_91
            schrieb am zuletzt editiert von
            #5

            @Asgothian
            Geht sofort,
            manchmal sieht man den Wald vor lauter Bäumen nicht.
            Vielen vielen dank, brauch ich heute weniger Tempotücher!

            Gruß MJ

            1 Antwort Letzte Antwort
            0
            • AsgothianA Asgothian

              @moskito_91 du übergibst der Funktion eine Variable für den Timer Namen. Allerdings gibst du den ggf. erzeugten Timer aus der Funktion nicht zurück, so das die Variablen

              var Jalousie_Timer_JaEs1;
              var Jalousie_Timer_JaEs2;
              
              

              nie eine wert bekommen - das Handle des Timers geht verloren.

              Du musst

              • die funktionsdefinition mit Rückgabe wert nutzen
              • den wert der Variablen Jalousie_Timer zurück geben
              • den rückgabewert der variable zuweisen die du als 4. Parameter der Funktion übergibst.

              A.

              M Offline
              M Offline
              moskito_91
              schrieb am zuletzt editiert von
              #6

              @asgothian
              Hallo!
              Ich bräuchte bitte nochmal Hilfe.
              Es geht um folgenden Code:

              var Ausgang_SSR, Status_SSR, SSR1_Timeout, SSR1_Timeout2, Timer_Index, Timerlaenge_BM, Status_BM;
              /**
              var Timer_Aussen_Eingang={val:0}
              var Timer_Aussen_Garage_Tor={val:0}
              
              function Bewegungsmelder_Aussen_2(Status_BM,Ausgang_SSR, Status_SSR, Timer_Index,Timerlaenge_BM) {
               if (compareTime(getAstroDate("sunriseEnd", undefined, 0), getAstroDate("sunsetStart", undefined, 0), "not between", null)) { 
                if (getState(Status_SSR).val != true) {
                  setState(Ausgang_SSR,'1');
                  SSR1_Timeout = setTimeout(function () {
                    setStateDelayed(Ausgang_SSR, '0', false, parseInt(0, 10), false);
                  }, 300);
                }
                (function () {if (Timer_Index) {clearTimeout(Timer_Index); Timer_Index = null;}})();
                if(getState(Status_BM).val != true) {   
                Timer_Index = setTimeout(function () {
                    if(getState(Status_SSR).val==true){
                  setState(Ausgang_SSR,'1');
                  SSR1_Timeout2 = setTimeout(function () {
                    setStateDelayed(Ausgang_SSR, '0', false, parseInt(0, 10), false);
                  }, 300); }
                }, Timerlaenge_BM);
                }
                  }
              }
              
              on({id: 'node-red.0.DI.BM_Aussen_Eingang', change: "ne"}, function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                Timer_Aussen_Eingang.val=Bewegungsmelder_Aussen_2('node-red.0.DI.BM_Aussen_Eingang','node-red.0.DO.Aussen_Eingang','node-red.0.DI.Aussen_Eingang',Timer_Aussen_Eingang.val, 30000);
                Timer_Aussen_Garage_Tor.val=Bewegungsmelder_Aussen_2('node-red.0.DI.BM_Aussen_Eingang','node-red.0.DO.Aussen_Garage_Tor','node-red.0.DI.Aussen_Garage_Tor',Timer_Aussen_Garage_Tor.val, 30000);
              });
              
              on({id: 'node-red.0.DI.BM_Aussen_Garage_Tor', change: "ne"}, function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                Timer_Aussen_Eingang.val=Bewegungsmelder_Aussen_2('node-red.0.DI.BM_Aussen_Garage_Tor','node-red.0.DO.Aussen_Eingang','node-red.0.DI.Aussen_Eingang',Timer_Aussen_Eingang.val, 30000);
                Timer_Aussen_Garage_Tor.val=Bewegungsmelder_Aussen_2('node-red.0.DI.BM_Aussen_Garage_Tor','node-red.0.DO.Aussen_Garage_Tor','node-red.0.DI.Aussen_Garage_Tor',Timer_Aussen_Garage_Tor.val, 30000);
              });
              

              In meinem ersten Funktionsprototypen hatte ich nur die Werte einer Variablen übergeben.
              Anschließend habe ich das Gefühl gehabt, dass jedes mal wenn die Funktion aufgerufen wird (auch von anderen Triggern), die Variable die im ersten Aufruf übergeben wurde, sprich der Timer resettet oder verändert wurde.

              Anschließend bin ich auf Cal-by-Value und Call-by-Reference gestoßen.
              Manchmal bleibt bei mir leider ein Stromstoßrelais angezogen. Ich kann das Script nicht gut genug debuggen und kriege den besagten Status auch nicht selber provoziert. Er stellt sich irgendwann ein.

              Bei der Embedded Programmierung kann ich den Scedular direkt beeinflußen, hier ist das leider ein wenig schwerer. Außerdem fehlt mir KnowHow um an die richtige stelle zu schauen.

              Bitte um Hilfe!

              AsgothianA 1 Antwort Letzte Antwort
              0
              • M moskito_91

                @asgothian
                Hallo!
                Ich bräuchte bitte nochmal Hilfe.
                Es geht um folgenden Code:

                var Ausgang_SSR, Status_SSR, SSR1_Timeout, SSR1_Timeout2, Timer_Index, Timerlaenge_BM, Status_BM;
                /**
                var Timer_Aussen_Eingang={val:0}
                var Timer_Aussen_Garage_Tor={val:0}
                
                function Bewegungsmelder_Aussen_2(Status_BM,Ausgang_SSR, Status_SSR, Timer_Index,Timerlaenge_BM) {
                 if (compareTime(getAstroDate("sunriseEnd", undefined, 0), getAstroDate("sunsetStart", undefined, 0), "not between", null)) { 
                  if (getState(Status_SSR).val != true) {
                    setState(Ausgang_SSR,'1');
                    SSR1_Timeout = setTimeout(function () {
                      setStateDelayed(Ausgang_SSR, '0', false, parseInt(0, 10), false);
                    }, 300);
                  }
                  (function () {if (Timer_Index) {clearTimeout(Timer_Index); Timer_Index = null;}})();
                  if(getState(Status_BM).val != true) {   
                  Timer_Index = setTimeout(function () {
                      if(getState(Status_SSR).val==true){
                    setState(Ausgang_SSR,'1');
                    SSR1_Timeout2 = setTimeout(function () {
                      setStateDelayed(Ausgang_SSR, '0', false, parseInt(0, 10), false);
                    }, 300); }
                  }, Timerlaenge_BM);
                  }
                    }
                }
                
                on({id: 'node-red.0.DI.BM_Aussen_Eingang', change: "ne"}, function (obj) {
                  var value = obj.state.val;
                  var oldValue = obj.oldState.val;
                  Timer_Aussen_Eingang.val=Bewegungsmelder_Aussen_2('node-red.0.DI.BM_Aussen_Eingang','node-red.0.DO.Aussen_Eingang','node-red.0.DI.Aussen_Eingang',Timer_Aussen_Eingang.val, 30000);
                  Timer_Aussen_Garage_Tor.val=Bewegungsmelder_Aussen_2('node-red.0.DI.BM_Aussen_Eingang','node-red.0.DO.Aussen_Garage_Tor','node-red.0.DI.Aussen_Garage_Tor',Timer_Aussen_Garage_Tor.val, 30000);
                });
                
                on({id: 'node-red.0.DI.BM_Aussen_Garage_Tor', change: "ne"}, function (obj) {
                  var value = obj.state.val;
                  var oldValue = obj.oldState.val;
                  Timer_Aussen_Eingang.val=Bewegungsmelder_Aussen_2('node-red.0.DI.BM_Aussen_Garage_Tor','node-red.0.DO.Aussen_Eingang','node-red.0.DI.Aussen_Eingang',Timer_Aussen_Eingang.val, 30000);
                  Timer_Aussen_Garage_Tor.val=Bewegungsmelder_Aussen_2('node-red.0.DI.BM_Aussen_Garage_Tor','node-red.0.DO.Aussen_Garage_Tor','node-red.0.DI.Aussen_Garage_Tor',Timer_Aussen_Garage_Tor.val, 30000);
                });
                

                In meinem ersten Funktionsprototypen hatte ich nur die Werte einer Variablen übergeben.
                Anschließend habe ich das Gefühl gehabt, dass jedes mal wenn die Funktion aufgerufen wird (auch von anderen Triggern), die Variable die im ersten Aufruf übergeben wurde, sprich der Timer resettet oder verändert wurde.

                Anschließend bin ich auf Cal-by-Value und Call-by-Reference gestoßen.
                Manchmal bleibt bei mir leider ein Stromstoßrelais angezogen. Ich kann das Script nicht gut genug debuggen und kriege den besagten Status auch nicht selber provoziert. Er stellt sich irgendwann ein.

                Bei der Embedded Programmierung kann ich den Scedular direkt beeinflußen, hier ist das leider ein wenig schwerer. Außerdem fehlt mir KnowHow um an die richtige stelle zu schauen.

                Bitte um Hilfe!

                AsgothianA Offline
                AsgothianA Offline
                Asgothian
                Developer
                schrieb am zuletzt editiert von
                #7

                @moskito_91
                Das kann ich mir erst heute Abend anschauen. Allerdings sind da auf jeden Fall mehrere Dinge unsauber oder sogar falsch - eine genauere Analyse kann ich noch nicht liefern:

                • Du hast Doppeldeutigkeiten bei Variablen und Funktionsparametern
                • Du hast ein getState mit callback und Reaktion auf den zurück gegebenen Wert - ob das so geht bin ich nicht sicher
                • Das GetState ist wenn ich das überblicke vollständig unnötig.

                Aber wie gesagt - da kann ich erst heute Abend im Detail dran gehen.

                A.

                ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                M 1 Antwort Letzte Antwort
                0
                • AsgothianA Asgothian

                  @moskito_91
                  Das kann ich mir erst heute Abend anschauen. Allerdings sind da auf jeden Fall mehrere Dinge unsauber oder sogar falsch - eine genauere Analyse kann ich noch nicht liefern:

                  • Du hast Doppeldeutigkeiten bei Variablen und Funktionsparametern
                  • Du hast ein getState mit callback und Reaktion auf den zurück gegebenen Wert - ob das so geht bin ich nicht sicher
                  • Das GetState ist wenn ich das überblicke vollständig unnötig.

                  Aber wie gesagt - da kann ich erst heute Abend im Detail dran gehen.

                  A.

                  M Offline
                  M Offline
                  moskito_91
                  schrieb am zuletzt editiert von
                  #8

                  @asgothian
                  Hallo,
                  könntest du am WE mal über den Code schauen?
                  Gruß MJ

                  AsgothianA 1 Antwort Letzte Antwort
                  0
                  • M moskito_91

                    @asgothian
                    Hallo,
                    könntest du am WE mal über den Code schauen?
                    Gruß MJ

                    AsgothianA Offline
                    AsgothianA Offline
                    Asgothian
                    Developer
                    schrieb am zuletzt editiert von
                    #9

                    @moskito_91

                    Was genau soll der code tun ? Es geht so viel durcheinander das ich da nicht durch steige:

                    • Warum sind Timer_Aussen_Eingang und Timer_aussen_Garage_Tor Objekte ?
                    • Was willst du damit tun. Du weist denen am Anfang einmal Werte zu, veränderst diese aber nicht mehr - Deine Funktion gibt keinen Wert zurück.
                    • Du hast einen Konflikt mit der Variable Timer_Index und dem Parameter Timer_Index was dazu führt das die Variable wahrscheinlich nie gesetzt wird. Das gleiche gilt für die meisten anderen Variablen, allerdings macht das da nichts.

                    Du machst da viele seltsame Dinge. Das lässt sich ohne weitere Info nicht debuggen.

                    A

                    ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                    "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                    M 1 Antwort Letzte Antwort
                    0
                    • AsgothianA Asgothian

                      @moskito_91

                      Was genau soll der code tun ? Es geht so viel durcheinander das ich da nicht durch steige:

                      • Warum sind Timer_Aussen_Eingang und Timer_aussen_Garage_Tor Objekte ?
                      • Was willst du damit tun. Du weist denen am Anfang einmal Werte zu, veränderst diese aber nicht mehr - Deine Funktion gibt keinen Wert zurück.
                      • Du hast einen Konflikt mit der Variable Timer_Index und dem Parameter Timer_Index was dazu führt das die Variable wahrscheinlich nie gesetzt wird. Das gleiche gilt für die meisten anderen Variablen, allerdings macht das da nichts.

                      Du machst da viele seltsame Dinge. Das lässt sich ohne weitere Info nicht debuggen.

                      A

                      M Offline
                      M Offline
                      moskito_91
                      schrieb am zuletzt editiert von
                      #10

                      @asgothian
                      Hallo,
                      danke für deine Antwort.
                      Was ich machen möchte:
                      Jeder Bewegungsmelder hat einen eigenen Timer. Dieser Timer wird bei Ausschalten des Bewegungsmelders gestartet.
                      Wenn der Bewegungsmelder nochmal getriggert wird, wird der Timer resettet.

                      Die Ausgänge sollen logischerweise das erste mal bei einem Signaleingang auf dem Bewegungsmelder auf 1 gesetzt werden. Hinter dem IObroker habe ich eine Eigenentwicklung hängen , die die Stromstoßrelais dort hinter schaltet.

                      Ich möchte, dass der jeweilige Timer bei Funktionsaufruf resettet wird.
                      Das Tor und der Eingang haben jeweils einen eigenen Bewegungsmelder. Beide Bewegungsmelder schalten aber die selben Ausgänge.

                      Danke und Gruß
                      MJ

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      415

                      Online

                      32.7k

                      Benutzer

                      82.4k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe