Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly mit Verzoegerung/timeout funktioniert nicht wie gewuenscht

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Blockly mit Verzoegerung/timeout funktioniert nicht wie gewuenscht

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

      Ha.

      Das Einsetzen einer Variablen in den Timer funktioniert nicht mehr!!!

      Habe ich gerade ausprobiert.

      War auch noch nie offiziell dokumentiert.

      Grüße

      1 Reply Last reply Reply Quote 0
      • N
        nibblerrick last edited by

        Ok, mein Test gerade auch mit ner ganzen Zahl hat auch nicht funktioniert.

        Wie setze ich denn dann am besten das um? Ich glaube das mit der Variablen da drin habe ich auch irgendwo im Forum gefunden gehabt.

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

          @nibblerrick:

          Ok, mein Test gerade auch mit ner ganzen Zahl hat auch nicht funktioniert. `
          ???? Kann ich gar nicht glauben.

          Stell doch mal einen Export von der aktuellen Version rein.

          @nibblerrick:

          Wie setze ich denn dann am besten das um? `
          Ich hatte Dir nen Link gezeigt 😉

          @nibblerrick:

          Ich glaube das mit der Variablen da drin habe ich auch irgendwo im Forum gefunden gehabt. `
          Den Beitrag suche ich verzeifelt.

          1 Reply Last reply Reply Quote 0
          • N
            nibblerrick last edited by

            Also mit ner Variablen mit ner ganzen Zahl drin. Nicht nur ne Zahl. Da es mit Variablen ja nicht mehr geht ist es ja logisch, dass es nicht funktioniert.

            Den Beitrag finde ich auch gerade nicht wieder, ich hatte da gestern 30 Tabs offen wo ich gewuehlt habe, weil ich mir alles moegliche zu Blockly angeguckt habe.

            Meinst du deinen Link? Wie kann ich denn da die halbe Zeit zwischen Sunset und 0 Uhr triggern?

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

              @nibblerrick:

              Meinst du deinen Link? Wie kann ich denn da die halbe Zeit zwischen Sunset und 0 Uhr triggern? `
              Du rechnest mit Sekunden, ich mit Minuten.

              1440 Min. (86400 Sek.)

              Aber stell die Frage doch bitte in dem Beitrag.

              Dann werden die Zusammenhänge auch für andere deutlicher.

              Grüße

              1 Reply Last reply Reply Quote 0
              • N
                nibblerrick last edited by

                Ob mit Minuten oder Sekunden ist ja vom Prinzip her egal.

                Ich will deinen Thread ja nicht zumuellen, wenn die Frage da sinnlos ist, ich sehe nur im Moment nicht, ob dein Blockly da weiterhilft, da ich ja zwar X Minuten/Sekunden nach Sonnenuntergang was steuern will, ich dieses X ja aber nicht kenne und berechnen muss und daher doch irgendwo eine Verzoegerung oder einen Trigger mit Variable haben muss.

                Also geht das irgendwie? Wenn du sagst ja oder ja wahrscheinlich stelle ich die Frage da gerne.

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

                  @nibblerrick:

                  Ob mit Minuten oder Sekunden ist ja vom Prinzip her egal.

                  Ich will deinen Thread ja nicht zumuellen, wenn die Frage da sinnlos ist, ich sehe nur im Moment nicht, ob dein Blockly da weiterhilft, da ich ja zwar X Minuten/Sekunden nach Sonnenuntergang was steuern will, ich dieses X ja aber nicht kenne und berechnen muss und daher doch irgendwo eine Verzoegerung oder einen Trigger mit Variable haben muss.

                  Also geht das irgendwie? Wenn du sagst ja oder ja wahrscheinlich stelle ich die Frage da gerne. `
                  Nun, eine Variable im Timeout hat sich ja erledigt.

                  Also wird Deine geplante Lösung nicht funktionieren.

                  Das bedeutet altes Konzept vergessen und einen neuen Weg suchen.

                  Dazu müssen wir definieren was Du genau möchtest.

                  Ich habe das so verstanden.

                  1. 30 Minuten nach Sonnenuntergang –-> Lampe-A an

                  2. in der Hälfte der Zeit von Sonnenuntergang zu 0 Uhr ---> Lampe-B an.

                  3. in der Hälfte der Zeit von Sonnenuntergang zu 0 Uhr + 10 Min ---> Lampe-A aus

                  Wenn ich da richtig liege können wir im anderen Thread weitermachen.

                  Grüße

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

                    @rantanplan:

                    Nun, eine Variable im Timeout hat sich ja erledigt.

                    Also wird Deine geplante Lösung nicht funktionieren.

                    Das bedeutet altes Konzept vergessen und einen neuen Weg suchen. `
                    Auf die Gefahr hin mich unbeliebt zu machen:

                    Mit "richtigem" JavaScript geht das. Mit dem konvertierten Blockly-Code gibts ja auch schon ne gute Grundlage, jetzt müsste man nur das fehlerhafte NaN durch die tatsächliche Variable ersetzen (umgerechnet in ms und gerundet)

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

                      @AlCalzone:

                      Auf die Gefahr hin mich unbeliebt zu machen: `
                      Da musst Du Dich aber mehr anstrengen. 😄

                      @AlCalzone:

                      Mit "richtigem" JavaScript geht das. Mit dem konvertierten Blockly-Code gibts ja auch schon ne gute Grundlage, jetzt müsste man nur das fehlerhafte NaN durch die tatsächliche Variable ersetzen (umgerechnet in ms und gerundet) `
                      Das wäre auch sehr schlecht wenn es mit dem "richtigen" JavaSript nicht gehen würde. 😉

                      Aber bei jeder Änderung immer die Konvertierung vornehmen finde ich nicht erstrebenswert.

                      Oder nibblerrick lernt JavaScript.

                      Oder er bleibt auf der dunklen Seite der Macht. 😄

                      Grüße

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

                        @rantanplan:

                        Aber bei jeder Änderung immer die Konvertierung vornehmen finde ich nicht erstrebenswert. `
                        Ja das wäre doof, besser wäre ein Fix für Blockly. Oder…
                        @rantanplan:

                        nibblerrick lernt JavaScript. `

                        1 Reply Last reply Reply Quote 0
                        • N
                          nibblerrick last edited by

                          @AlCalzone:

                          @rantanplan:

                          Aber bei jeder Änderung immer die Konvertierung vornehmen finde ich nicht erstrebenswert. `
                          Ja das wäre doof, besser wäre ein Fix für Blockly. Oder…
                          @rantanplan:

                          nibblerrick lernt JavaScript.

                          Ich habe mich schon gefragt, ob es klappt, wenn man die Variable da einsetzt. Ich bin programmieren nicht abgeneigt, aber ich setze es einfach zu selten ein, als dass ich, wenn ich es brauche, etwas in sinnvoller Zeit schaffe. Daher finde ich blockly ganz sexy. Ich probiere das nachher mal.

                          Und nein, mit so etwas macht man sich (zumindest bei mir) nicht unbeliebt. Also das ist Variante A zum ausprobieren.

                          Variante B ist in im anderen Thread weitermachen, da bin ich auch neugierig drauf, da schreibe ich gleich auch. Ich berichte dann hier, wenn ich mit Javascript gefailed habe oder nicht.

                          1 Reply Last reply Reply Quote 0
                          • N
                            nibblerrick last edited by

                            Also ich konnte endlich mal wieder einen Moment etwas ausprobieren. Bei "meiner" Version bin ich schon weitergekommen, und es laeuft auch soweit. Sogar mit Blockly.

                            Bei Blockly ist erstmal die Falle, dass, wenn man beim Timeout was anderes als ms nimmt es wohl umgerechnet wird. halfway sekunden ist dann halfway*1000 und das ergibt natuerlich nichts sinnvolles.

                            Ich habe das Ganze jetzt mal etwas eingekuerzt und mit Sekunden gerechnet, die dann in Millisekunden umgerechnet werden. Dafuer habe ich die Sekunden geteilt 0,002 genommen um die Haelfte der Zeit zu haben und dann mal 1000. Das ganze spuckt Blockly als Code so aus:

                            var halfway, timeout;
                            
                            schedule({astro: "sunset", shift: 30}, function () {
                              // Durch 0.002 ist durch 2 und mal 1.000 (um von sec auf ms) zusammen. Da mal 1.000 sollte runden nicht noetig sein.
                              halfway = (86400 - (new Date().getHours() * 3600 + new Date().getMinutes() * 60 + new Date().getSeconds())) / 0.002;
                              sendTo("telegram", "send", {
                                  text: (String('Sunset +30min, halfway: ') + String(halfway))
                              });
                              timeout = setTimeout(function () {
                                sendTo("telegram", "send", {
                                    text: (String('timeout halfway, halfway: ') + String(halfway))
                                });
                              }, halfway);
                            });
                            
                            

                            Da fehlt jetzt natuerlich das Schalten der Lampen usw. drin, ist einfach mit Telegramnachricht zum ausprobieren.

                            Falls es wer brauchen kann, hier noch der Blocklyexport:

                            ! <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml">
                            ! <block type="astro" id="BDVm]m*]u8-9oS)YUzG}" x="-537" y="-337"><field name="TYPE">sunset</field>
                            ! <field name="OFFSET">30</field>
                            ! <statement name="STATEMENT"><block type="comment" id="P5Uk#qMCyE;AdRJGj|*"><field name="COMMENT">Durch 0.002 ist durch 2 und mal 1.000 (um von sec auf ms) zusammen. Da mal 1.000 sollte runden nicht noetig sein.</field> ! <next><block type="variables_set" id="6OoB{/SD;)^:PY]nnA_F"><field name="VAR">halfway</field> ! <value name="VALUE"><block type="math_arithmetic" id="V0@[w^.eJVrK?TF1f=qv"><field name="OP">DIVIDE</field> ! <value name="A"><shadow type="math_number" id="+S^QA7_Uj3?K[!1!9DPG"><field name="NUM">1</field></shadow> ! <block type="math_arithmetic" id=")QFb}^[cv.j3Ke=m+cV-"><field name="OP">MINUS</field> ! <value name="A"><shadow type="math_number" id=")vzB58fidSav(D[NfhsD"><field name="NUM">86400</field></shadow></value> ! <value name="B"><shadow type="math_number" id="_^6ua_]lB)_LXm9u6r=w"><field name="NUM">1</field></shadow> ! <block type="time_get" id="_tAL4t8RK5I_r(f,uX^!"><mutation format="false" language="false"></mutation> ! <field name="OPTION">sid</field></block></value></block></value> ! <value name="B"><shadow type="math_number" id="W~c@m930b}~f;rMZGT!"><field name="NUM">0.002</field></shadow></value></block></value>
                            ! <next><block type="telegram" id=";iOWfxo*jmH{A528@mV"><value name="MESSAGE"><shadow type="text" id="|yr}sZ_S1{NX*e^jX{fY"><field name="TEXT">Sonnenuntergang +30 Minuten</field></shadow> ! <block type="text_join" id="59}{V3Vo@HSYUk+oBm9"><mutation items="2"></mutation>
                            ! <value name="ADD0"><block type="text" id="SlQZrOB*A(?G;|lx1Nx"><field name="TEXT">Sunset +30min, halfway:</field></block></value> ! <value name="ADD1"><block type="variables_get" id="oNTXhHkdRffL5EjB}z=p"><field name="VAR">halfway</field></block></value></block></value> ! <next><block type="timeouts_settimeout" id="UI{;!tz0.iwt;|6=i{^"><field name="NAME">timeout</field>
                            ! <field name="DELAY">halfway</field>
                            ! <field name="UNIT">ms</field>
                            ! <statement name="STATEMENT"><block type="telegram" id="5DsYk[f%Y.z3P^uiSNfJ"><value name="MESSAGE"><shadow type="text" id="M=8ooc_#wpms1QR_*2NT"><field name="TEXT">Timeout halfway</field></shadow>
                            ! <block type="text_join" id="%ybFeSdb_!Ul(j-~qJX7"><mutation items="2"></mutation>
                            ! <value name="ADD0"><block type="text" id="eSu[Oj=d|2Z.zRYM|MDY"><field name="TEXT">timeout halfway, halfway:</field></block></value>
                            ! <value name="ADD1"><block type="variables_get" id="Q?TJ/grVnlAiIlB3Y]aa"><field name="VAR">halfway</field></block></value></block></value></block></statement></block></next></block></next></block></next></block></statement></block>
                            ! <block type="schedule" id="ZP7LZ,z0gDB-@[8zj+Z" x="-537" y="213"><field name="SCHEDULE">0 0 * * *</field> ! <statement name="STATEMENT"><block type="telegram" id="7r{9y2;T!f={^ZWjhRW0"><value name="MESSAGE"><shadow type="text" id="B-Jg1Lzf/-Y~iu-LE/,"><field name="TEXT">Mitternacht Lampen aus</field></shadow></value></block></statement></block></xml>

                            Jetzt muss ich noch mit der Variante im anderen Thread beschaeftigen, damit laeuft es noch nicht, aber ich bin mir noch nicht sicher ob es einfach ein PEBKAC ist.
                            3803_firefox_2017-11-08_14-58-17.png

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            659
                            Online

                            31.7k
                            Users

                            79.8k
                            Topics

                            1.3m
                            Posts

                            3
                            19
                            3376
                            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