Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly - setStateDelayed mit Fehler in der Umsetzung ?

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Blockly - setStateDelayed mit Fehler in der Umsetzung ?

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

      Ich bin jetzt ein paar Tage mit meinem Bewegungsmelder am Kämpfen.

      Eigentlich sollte es einfach sein:

      • Bewegung erkannt - Licht an

      • keine Bewegung mehr - Licht in 10 Minuten aus, löschen falls es schon läuft

      Das habe ich in Blockly alles schön programmiert, aber mein Licht geht auch schon mal nach 30 Sekunden oder 2 Minuten aus.

      Heute habe ich bemerkt, daß das Ausschalten genau immer 10 Minuten nach der Aus-Meldung vom BWM kommt - offensichtlich wird der Timer nicht gelöscht.

      Ich verwendete im Blockly "aktualisiere <id>mit <unwahr>, verzögert 10 Min und lösche falls läuft.

      Blockly erzeugt dann einen Code:

      on({id: "mqtt.0.stat.ArZi-Touch.POWER"/*stat/ArZi-Touch/POWER*/, change: "ne"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        setStateDelayed("admin.0.ArZi-Deckenlampe"/*ArZi-Deckenlampe*/, (value == 'ON'), true, 100, false);
      });
      

      Nehme ich den Haken bei "löschen falls läuft" weg, kommt das heraus:

      on({id: "mqtt.0.stat.ArZi-Touch.POWER"/*stat/ArZi-Touch/POWER*/, change: "ne"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        setStateDelayed("admin.0.ArZi-Deckenlampe"/*ArZi-Deckenlampe*/, (value == 'ON'), true, 100, false);
      });
      

      Wie man sieht, exakt das gleiche.

      Nehme ich statt "aktualisiere" das stärkere "steuere" klappt es und der Code sieht anders aus.

      Für mich ist das ein Fehler…</unwahr></id>

      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        Screenshot des blockly bitte ist einfacher und schneller um zu reagieren [emoji3]

        Ich verstehe deine Frage / Problem auch nicht ganz am Ende sagst du es läuft ?

        Aktualisiere = ist für variabelen

        Steuere = für Zustände

        Wen es also mit steuere geht verstehe ich das Problem nicht wobei wir helfen sollen [emoji3]

        –-----------------------

        Send from mobile device

        Das schöne ios hat Auto Korrektur zum k****

        Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community

        1 Reply Last reply Reply Quote 0
        • BigWumpus
          BigWumpus last edited by

          Hallo,

          ich schalte da nur Variablen um, die Anbindung an die Schalter etc. liegt in anderen Scripts.

          Aktualisiere - die Verzögerung funktioniert, das löschen nicht (immer false).

          Steuere - alles funktioniert.
          6814_x.gif

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            ich verstehen dein blockly komplett gar nicht das mach keinen sinn….

            in deinem falls unter debug stehen keine abfrage, falls = value ? was willst du damit erreichen ?

            des Weiteren wird bei mache kein timer gelöscht, kannst du mal bitte:

            • genau das scenario posten was du erreichen möchtest.

            • dein blockly exportieren und hier posten (nicht den generierten java code sonder den blocky export !)

            Thanks

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

              @Dutchman:

              in deinem falls unter debug stehen keine abfrage, falls = value ? `
              Die Abfrage ist korrekt und entspricht

              if(obj.state.val) { // Bewegung erkannt
              
              1 Reply Last reply Reply Quote 0
              • Dutchman
                Dutchman Developer Most Active Administrators last edited by

                @paul53:

                @Dutchman:

                in deinem falls unter debug stehen keine abfrage, falls = value ? `
                Die Abfrage ist korrekt und entspricht

                if(obj.state.val) { // Bewegung erkannt
                ```` `  
                

                ok verstanden danke Paul

                Dan ist der Fehler hier aber das der time nicht resettet wird wen "an" erkannt wurden.

                Anstatt mit Verzögerung müsste man in blockly dan mit einen richtigen timeout / stop time out block arbeiten

                1 Reply Last reply Reply Quote 0
                • rantanplan
                  rantanplan last edited by

                  @BigWumpus:

                  Aktualisiere - die Verzögerung funktioniert, das löschen nicht (immer false).

                  Steuere - alles funktioniert. `
                  Ich habe keine Ahnung was Du damit sagen willst.

                  Kann es sein das Dein BM immer nur "true/wahr" liefert?

                  Grüße

                  1 Reply Last reply Reply Quote 0
                  • BigWumpus
                    BigWumpus last edited by

                    Buah…

                    ich wundere mich hier schon über die versch. Programmier-Exzesse gar nicht mehr ...

                    mein BWM meldet "true" bei Bewegung und nach 60 Sekunden wieder "false", wenn Ruhe ist:

                    javascript.0	2018-04-15 20:27:12.787	info	script.js.meins.BaZi-Bewegung_folgen(1): BaZi-Bewegung: false
                    javascript.0	2018-04-15 20:26:12.854	info	script.js.meins.BaZi-Lampe_schalten: BaZi-Lampe ein
                    javascript.0	2018-04-15 20:26:12.736	info	script.js.meins.BaZi-Bewegung_folgen(1): BaZi-Bewegung: true
                    

                    Die Timer-Konstruktion habe ich versch. ausprobiert, Alles funktionierte nicht.

                    Jetzt mit "Steuere" statt "Aktualisiere" läuft es. Da ist ein Fehler im Blockly !

                    @Dutchman:

                    Die Variable "value" wird im Kopf des Triggers mit dem Wert des abgefragten Datenpunktes gefüllt und kann dann verwendet werden.

                    @Dutchman:

                    "If true" ist ungeführ so viel wert wie "if true=true".

                    @Dutchman:

                    Über das Löschen des Timers bei BWM=true können wir streiten, da könnte es ein Problem bei ca. 9 Minuten Stillhalten geben…

                    Der Fehler im Blockly bleibt ja, egal was ich schreibe, wenn das "true" für das Setzen des Timers nicht an Javascript übergeben wird.

                    1 Reply Last reply Reply Quote 0
                    • BigWumpus
                      BigWumpus last edited by

                      @Dutchman:

                      • genau das scenario posten was du erreichen möchtest.

                      • dein blockly exportieren und hier posten (nicht den generierten java code sonder den blocky export !) `

                      Das Szenario steht oben im Thread.

                      Den Blockly könnte ich auch schicken, würde aber nichts bringen, weil man den Fehler nur erkennt, wenn man einfach eine "Aktualisiere"-Anweisung mit Verzögerung und "löschen falls läuft" in Blockly eingibt und auf Code-Anzeige umschaltet. (das hatte ich darum gepostet).

                      Dann nmmt man in der Blockly-Anzeige den Haken bei "löschen wenn läuft" raus und schaltet wieder auf die Code-Anzeige um. Das gleiche Ergebnis bei versch. Quelltext - ist schon merkwürdig.

                      Und keine Angst, der Script läuft prima mit einem kleinen XIAOMI-Bewegungsmelder hier. Ich hätte noch 2 Philips Hue-BWM anzubieten, die fliegen nämlich raus.

                      1 Reply Last reply Reply Quote 0
                      • rantanplan
                        rantanplan last edited by

                        @BigWumpus:

                        Buah…

                        ich wundere mich hier schon über die versch. Programmier-Exzesse gar nicht mehr ... `
                        OK. Ich bin hier raus.

                        1 Reply Last reply Reply Quote 0
                        • Dutchman
                          Dutchman Developer Most Active Administrators last edited by

                          Ok…

                          Fragen :

                          • der Bewegungsmelder gibt einen Wert true (wen Bewegung) und false (wen keine Bewegung) ?

                          • diese Daten kommen auch Life rein ohne Verzögerung ?

                          • wen Bewegung Dan Licht an ?

                          • wen keine Bewegung mehr nach 10 min aus ?

                          Hab ich das so richtig verstanden ?!?


                          Send from mobile device

                          Das schöne ios hat Auto Korrektur zum k****

                          Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community

                          1 Reply Last reply Reply Quote 0
                          • BigWumpus
                            BigWumpus last edited by

                            @Dutchman:

                            • der Bewegungsmelder gibt einen Wert true (wen Bewegung) und false (wen keine Bewegung) ?

                            • diese Daten kommen auch Life rein ohne Verzögerung ?

                            • wen Bewegung Dan Licht an ?

                            • wen keine Bewegung mehr nach 10 min aus ? `

                            Ja (Timeout 60 Sekunden)

                            Ja

                            Ja

                            Ja (jetzt)

                            1 Reply Last reply Reply Quote 0
                            • Dutchman
                              Dutchman Developer Most Active Administrators last edited by

                              Das scenarion klinkt nicht kompliziert und ich würde es auf diese weise lösen.

                              Hierin fragen ich den BMW ab auf Änderungen,

                              ist Bewegung wahr

                              • sollte die Lampe aus sein geht sie an und stopt eventuelle timer

                              • sollte die Lampe bereits an sein stoppt nur der time (um doppeltes schalten zu vermeiden

                              ist Bewegung unwahr

                              • aktiviere timer für 10 Minuten

                              • schalte nach Ablauf die Lampe aus

                              979_screen_shot_2018-04-15_at_22.08.24.png

                              blocky export:

                               <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on" id="*?Q;v#g,}Q[X1V;Up{fp" x="-188" y="12"><field name="OID">javascript.2.BWM</field>
                                  <field name="CONDITION">ne</field>
                              
                                  <statement name="STATEMENT"><block type="controls_if" id="E!w;6q:m.x1q)rPRp*of"><mutation elseif="2"></mutation>
                                      <value name="IF0"><block type="logic_operation" id="mp4EeT(Q++deK(RwU0DD" inline="false"><field name="OP">AND</field>
                                          <value name="A"><block type="logic_compare" id="MUno8@nbg0a7JhWW~vKl"><field name="OP">EQ</field>
                                              <value name="A"><block type="get_value" id="_@f+8i`+Vr.|MhM}cZ?C"><field name="ATTR">val</field>
                                                  <field name="OID">javascript.2.BWM</field></block></value> 
                                              <value name="B"><block type="logic_boolean" id="V=P|BryQwCL-N(dCkmo0"><field name="BOOL">TRUE</field></block></value></block></value> 
                                          <value name="B"><block type="logic_compare" id="/YewW0C+po|9+dV4NViz"><field name="OP">EQ</field>
                                              <value name="A"><block type="get_value" id="SeOT|8nH7J?].z;uaqCR"><field name="ATTR">val</field>
                                                  <field name="OID">javascript.2.LAMPE</field></block></value> 
                                              <value name="B"><block type="logic_boolean" id="rUp5NU#KC.hMl;5;@)e="><field name="BOOL">FALSE</field></block></value></block></value></block></value> 
                                      <statement name="DO0"><block type="timeouts_cleartimeout" id="Uv4pkl%j=q.iF?C}CcgH"><field name="NAME">timeout</field>
                                          <next><block type="control" id="x=RRVZLmnUU8cb]bMHaI"><mutation delay_input="false"></mutation>
                                              <field name="OID">javascript.2.LAMPE</field>
                                              <field name="WITH_DELAY">FALSE</field>
                                              <value name="VALUE"><block type="logic_boolean" id="i[`LOwIbi0zu.VY.*VdM"><field name="BOOL">TRUE</field></block></value></block></next></block></statement> 
                                      <value name="IF1"><block type="logic_operation" id=",o-p]ifAXEA)8nGpc]~a" inline="false"><field name="OP">AND</field>
                                          <value name="A"><block type="logic_compare" id="CoiXrUHg|GH7!,7KZK9V"><field name="OP">EQ</field>
                                              <value name="A"><block type="get_value" id="K.Y]V2XQZ4Yl4.fQe2B("><field name="ATTR">val</field>
                                                  <field name="OID">javascript.2.BWM</field></block></value> 
                                              <value name="B"><block type="logic_boolean" id="20A1FNRX!m?_PaKsDX{P"><field name="BOOL">TRUE</field></block></value></block></value> 
                                          <value name="B"><block type="logic_compare" id="WP@E:n:2Vv//n{n)K:Fa"><field name="OP">EQ</field>
                                              <value name="A"><block type="get_value" id="eN%-(/T*3^BsJ=ZUh^64"><field name="ATTR">val</field>
                                                  <field name="OID">javascript.2.LAMPE</field></block></value> 
                                              <value name="B"><block type="logic_boolean" id="|(OxGxW[]_EdVe%Oj9Z8"><field name="BOOL">TRUE</field></block></value></block></value></block></value> 
                                      <statement name="DO1"><block type="timeouts_cleartimeout" id="%`Vm_V8lA1B7@sy=5JmR"><field name="NAME">timeout</field></block></statement> 
                                      <value name="IF2"><block type="logic_operation" id="*A%PX0#.v/_wK}#:w*bW" inline="false"><field name="OP">AND</field>
                                          <value name="A"><block type="logic_compare" id="_/6@/O}u7j,__%#_?k(0"><field name="OP">EQ</field>
                                              <value name="A"><block type="get_value" id="0x4Wp?QlR^mSKqN%OTI("><field name="ATTR">val</field>
                                                  <field name="OID">javascript.2.BWM</field></block></value> 
                                              <value name="B"><block type="logic_boolean" id="{NrFe@@PVeBUT@bLb)Jf"><field name="BOOL">FALSE</field></block></value></block></value> 
                                          <value name="B"><block type="logic_compare" id="bz(zT+z-VKVy{Y,hXc;M"><field name="OP">EQ</field>
                                              <value name="A"><block type="get_value" id="_,sN(+*m1L{[DU;GknTH"><field name="ATTR">val</field>
                                                  <field name="OID">javascript.2.LAMPE</field></block></value> 
                                              <value name="B"><block type="logic_boolean" id="j,5pa`k4D:dSp)4~aWIu"><field name="BOOL">TRUE</field></block></value></block></value></block></value> 
                                      <statement name="DO2"><block type="timeouts_settimeout" id="J)PH}h)awJQsRU=3j(x*"><field name="NAME">timeout</field>
                                          <field name="DELAY">10</field>
                                          <field name="UNIT">min</field>
                                          <statement name="STATEMENT"><block type="control" id="!UE9O,@qJU^9Dz`~M,))"><mutation delay_input="false"></mutation>
                                              <field name="OID">javascript.2.LAMPE</field>
                                              <field name="WITH_DELAY">FALSE</field>
                                              <value name="VALUE"><block type="logic_boolean" id="dkeuXbFXEikmQ(#*W.,{"><field name="BOOL">FALSE</field></block></value></block></statement></block></statement></block></statement></block></xml> 
                              
                              

                              im unterschied zu deiner ansehensweise setze ich bewusste timer ein und stoppe diese anstatt die Blöcke im Steuerblock

                              ~Dutch

                              1 Reply Last reply Reply Quote 0
                              • BigWumpus
                                BigWumpus last edited by

                                Ja prima !!!

                                Fakt ist aber, dass ich soviel Blockly programmieren kann, wie ich will, die Umsetzung in Javascript ist buggy!

                                Alle beschäftigen sich hier mit Blockly und den tollsten Scripts, niemand sieht den Fehler.

                                1 Reply Last reply Reply Quote 0
                                • AlCalzone
                                  AlCalzone Developer last edited by

                                  @BigWumpus:

                                  Fakt ist aber, dass ich soviel Blockly programmieren kann, wie ich will, die Umsetzung in Javascript ist buggy!

                                  Alle beschäftigen sich hier mit Blockly und den tollsten Scripts, niemand sieht den Fehler. `
                                  Wo du Recht hast…

                                  Hab mal ein Issue erstellt: https://github.com/ioBroker/ioBroker.ja ... issues/105

                                  1 Reply Last reply Reply Quote 0
                                  • rantanplan
                                    rantanplan last edited by

                                    @BigWumpus:

                                    Ja prima !!!

                                    Fakt ist aber, dass ich soviel Blockly programmieren kann, wie ich will, die Umsetzung in Javascript ist buggy!

                                    Alle beschäftigen sich hier mit Blockly und den tollsten Scripts, niemand sieht den Fehler. `
                                    Bin zwar schon raus…..Aber....welchen Fehler?

                                    Bis jetzt sehe ich nur einen Fehler :roll:

                                    Sorry, ist sonst nicht meine Art.

                                    1 Reply Last reply Reply Quote 0
                                    • Dutchman
                                      Dutchman Developer Most Active Administrators last edited by

                                      @BigWumpus:

                                      Ja prima !!!

                                      Fakt ist aber, dass ich soviel Blockly programmieren kann, wie ich will, die Umsetzung in Javascript ist buggy!

                                      Alle beschäftigen sich hier mit Blockly und den tollsten Scripts, niemand sieht den Fehler. `

                                      Bin dann wohl zu doof den Fehler zu sehen oder umgehen ihn halt auf meine Weise.

                                      Bin dann auch raus

                                      –-----------------------

                                      Send from mobile device

                                      Das schöne ios hat Auto Korrektur zum k****

                                      Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community

                                      1 Reply Last reply Reply Quote 0
                                      • rantanplan
                                        rantanplan last edited by

                                        @AlCalzone:

                                        Hab mal ein Issue erstellt: https://github.com/ioBroker/ioBroker.ja … issues/105 `
                                        Das wird ja her immer interessanter :?

                                        Ab welchem Status/Level kann man sich hier zeitlich "vormogeln".

                                        Ich verliere hier immer mehr die Lust 😢

                                        Grüße

                                        1 Reply Last reply Reply Quote 0
                                        • R
                                          RappiRN Most Active last edited by

                                          Dein Datenpunkt für die Lampe liegt unter admin.0, dort (und auch unter allen anderen, außer javascript.0 und selbst angelegten Objekten) sollten keine eigenen Objekte angelegt werden, das hat auch schon zu Fehlern in der Ausführung von Scripten geführt!

                                          Enrico

                                          1 Reply Last reply Reply Quote 0
                                          • AlCalzone
                                            AlCalzone Developer last edited by

                                            @rantanplan:

                                            Ab welchem Status/Level kann man sich hier zeitlich "vormogeln".

                                            Ich verliere hier immer mehr die Lust 😢 `
                                            Hö, was meinst du?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            806
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            8
                                            23
                                            1918
                                            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