Navigation

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

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Timeout in Blockly funktioniert nicht

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

      Hallo zusammen,

      ich bin dabei mich mit dem ioBroker auseinanderzusetzen um eine Haussteuerung zu realisieren.

      Da meine Javascript Kenntnisse eher gering sind setze ich bei den Skripten auf Blockly und habe begonnen einfache Skripte (Lampe an, Fernseher aus) zu schreiben.

      Um der Fernseher auszuschalten benötige ich erstmal ein Infrarotsignal, dann eine Pause und zum Abschluss ein 433Mhz Kommando. Die Pause lässt sich mit einem Timeout jedoch nicht schalten, die Befehle rattern direkt durch.

      Hier der Code:

      timeout = setTimeout(function () {

      }, 10000);

      Dieser soll eine 10 Sekundenpause bewirken, macht aber scheinbar garnichts. Kann mir da bitte jemand weiterhelfen?

      Kleine Anmerkung noch, es funktioniert auch nicht, wenn ich den "Falls Objekt"-Block in den Timeout Block ziehe.

      Vielen Dank schonmal.

      LG

      Steffen
      4846_timeout.jpg

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

        Du hast leider nur einen kleinen Ausschnitt aus deinem Blockly gezeigt.

        Alles, was du über den Timeout verzögern willst, muss in den Timeout! Und auch aufpassen, dass der Timeout nicht mehrfach gestartet werden kann, bzw. darauf achten, bei bestimmten Bedingungen den Timeout sicherheitshalber stoppen.

        Enrico

        1 Reply Last reply Reply Quote 0
        • S
          smueller last edited by

          Hallo und vielen Dank für die Antwort.

          D.h. mein erster Ansatz die Bedingung innerhalb des Timeouts zu platzieren war doch richtig (sah auch logischer aus).

          Wobei dieser Aufbau die Problematik nicht behebt, anbei der ganze Block für meinen Fernseher. Die Befehle werden nahezu gleichzeitig ausgegeben.

          LG

          Steffen
          4846_timeout2.jpg

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

            mach mal bitten einen export von deinem block das ist einfacher 😉

            Dein blockly stimme nicht, die timeouts sind auserhalb der trigger machen also ueberhaupt garnichts

            Wozu ist die variable/object Fernseh switch ?

            die timeouts gehoren in die "mache" deines falls blocks und die bloecke "steuere" innerhalb dieses timeouts

            1 Reply Last reply Reply Quote 0
            • S
              smueller last edited by

              Hallo,

              danke für die Antwort, ich hoffe ich habe das mit dem Export richtig verstanden:

              var timeout3, timeout, timeout2;

              timeout3 = setTimeout(function () {

              setState("broadlink.0.learnedSignals.FernsehSwitch"/FernsehSwitch/, true);

              }, 15000);

              timeout = setTimeout(function () {

              on({id: 'broadlink.0.learnedSignals..Fernseher', change: "ne"}, function (obj) {

              var value = obj.state.val;

              var oldValue = obj.oldState.val;

              if (getState("broadlink.0.learnedSignals..Fernseher").val == true) {

              setState("broadlink.0.learnedSignals.FernseherAn"/FernseherAn/, true);

              } else if (getState("broadlink.0.learnedSignals..Fernseher").val == false) {

              setState("broadlink.0.learnedSignals.FernseherAus"/FernseherAus/, true);

              }

              });

              }, 10000);

              timeout2 = setTimeout(function () {

              setState("broadlink.0.learnedSignals.FernsehSwitch"/FernsehSwitch/, true);

              }, 15000);

              Der Fernsehswitch emuliert einmal den Ein/Aus Schalter der Fernbedienung, vom Gedanken her, Fernseher in Standby…warten und Steckerleiste aus. Bzw. Steckerleiste an...warten und Fernseher vom Standby auf an.

              Ich verstehe leider nicht ganz wie ich die Timeouts "in" die Trigger einbauen kann.

              LG

              Steffen

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

                Fast richtig ich brauche den blockly Export nicht das generierte Script, geh Mal auf die Pfeiltasten und dann exportiere blockly 🙂

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

                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

                  @smueller:

                  Wobei dieser Aufbau die Problematik nicht behebt, anbei der ganze Block für meinen Fernseher. Die Befehle werden nahezu gleichzeitig ausgegeben. ` Hallo

                  Timeouts machen KEINE Programmpause!

                  Die nachfolgenden Befehle werden direkt danach ausgeführt.

                  Die Befehle INNERHALB des Timers werden NACH der abgelaufenen Zeit des Timers ausgeführt.

                  Die Anweisungen IN "Timerout" werden 10 Sek. nach Scriptstart,

                  "timeout2" UND "timeout3" werden 15 Sek nach Scriptstart ausgeführt.

                  Grüße

                  PS.

                  Du hast keinen Blockly Export gemacht sondern das Script kopiert.

                  Einen Export macht man hier.
                  147_blocklyimport.png

                  Den Export dann immer in den Tags "spoiler" und "code" in den Beitrag einfügen.

                  1 Reply Last reply Reply Quote 0
                  • S
                    smueller last edited by

                    Hello,

                    oha, ich sehe schon, hab noch viel zu lernen!

                    Wobei die Ausführung des Skripts nicht abläuft wie Rantanplan aufgezeigt hat, das Ding rattert ohne Verzögerung direkt beim Start los und sendet scheinbar alle drei Befehle auf einmal?!

                    Hier der Blockly-Export:

                     <xml xmlns="http://www.w3.org/1999/xhtml"><block type="timeouts_settimeout" id=":R19h()#3b:wj+MHuOrO" x="162" y="13"><field name="NAME">timeout3</field>
                        <field name="DELAY">15</field>
                        <field name="UNIT">sec</field>
                        <statement name="STATEMENT"><block type="control" id="FwGXK}r@Mad]|mB]A~8@"><mutation delay_input="false"></mutation>
                            <field name="OID">broadlink.0.learnedSignals.FernsehSwitch</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE"><block type="logic_boolean" id="#iWGR}~b^s@HWOEg,Aqd"><field name="BOOL">TRUE</field></block></value></block></statement> 
                        <next><block type="timeouts_settimeout" id="*L8vt+g*idPqggl-]ini"><field name="NAME">timeout</field>
                            <field name="DELAY">10</field>
                            <field name="UNIT">sec</field>
                            <statement name="STATEMENT"><block type="on_ext" id="z9%E+s(WEefq(I3*FP*0"><mutation items="1"></mutation>
                                <field name="CONDITION">ne</field>
                    
                                <value name="OID0"><shadow type="field_oid" id="*%Ed+(aG1MTyqOC)R-wq"><field name="oid">broadlink.0.learnedSignals..Fernseher</field></shadow></value> 
                                <statement name="STATEMENT"><block type="controls_if" id="c]7K4Hu%{Ow8mYr:dwyF"><mutation elseif="1"></mutation>
                                    <value name="IF0"><block type="logic_compare" id="@B|3xRB2^T1nF{ma]T]Y"><field name="OP">EQ</field>
                                        <value name="A"><block type="get_value" id="5.iuLn0srwVI@`Vl^yzS"><field name="ATTR">val</field>
                                            <field name="OID">broadlink.0.learnedSignals..Fernseher</field></block></value> 
                                        <value name="B"><block type="logic_boolean" id="-m=[JUAf.=+Iy)M/j#-]"><field name="BOOL">TRUE</field></block></value></block></value> 
                                    <statement name="DO0"><block type="control" id="LVN;Pn`pmn[YUk3-5@V."><mutation delay_input="false"></mutation>
                                        <field name="OID">broadlink.0.learnedSignals.FernseherAn</field>
                                        <field name="WITH_DELAY">FALSE</field>
                                        <value name="VALUE"><block type="logic_boolean" id="?QK|/o`Tzsj!*?4tItQQ"><field name="BOOL">TRUE</field></block></value></block></statement> 
                                    <value name="IF1"><block type="logic_compare" id="^i`GDbk)D2(:X.}r13#I"><field name="OP">EQ</field>
                                        <value name="A"><block type="get_value" id="#+xZJuJZ*.vI:1n}Zm|X"><field name="ATTR">val</field>
                                            <field name="OID">broadlink.0.learnedSignals..Fernseher</field></block></value> 
                                        <value name="B"><block type="logic_boolean" id=";7LeNZ5Q]n:aRGS4)Edf"><field name="BOOL">FALSE</field></block></value></block></value> 
                                    <statement name="DO1"><block type="control" id="w(3Q?()kE/Hr/Beue]/a"><mutation delay_input="false"></mutation>
                                        <field name="OID">broadlink.0.learnedSignals.FernseherAus</field>
                                        <field name="WITH_DELAY">FALSE</field>
                                        <value name="VALUE"><block type="logic_boolean" id="Gx{@]eO6RfavN5kx^Wvm"><field name="BOOL">TRUE</field></block></value></block></statement></block></statement></block></statement> 
                            <next><block type="timeouts_settimeout" id="4bpRe8;_IZc;}3##;U0p"><field name="NAME">timeout2</field>
                                <field name="DELAY">15</field>
                                <field name="UNIT">sec</field>
                                <statement name="STATEMENT"><block type="control" id="}vT7xTp|^a+|x?1yHF=D"><mutation delay_input="false"></mutation>
                                    <field name="OID">broadlink.0.learnedSignals.FernsehSwitch</field>
                                    <field name="WITH_DELAY">FALSE</field>
                                    <value name="VALUE"><block type="logic_boolean" id="~H1*PJ59;)5d)F{%a?`G"><field name="BOOL">TRUE</field></block></value></block></statement></block></next></block></next></block></xml> 
                    
                    

                    LG

                    Steffen

                    1 Reply Last reply Reply Quote 0
                    • S
                      smueller last edited by

                      Hello,

                      hat keiner mehr ne Idee oder übersehe ich etwas offensichtliches? :?:

                      SG

                      Steffen

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

                        @smueller:

                        Hello,

                        hat keiner mehr ne Idee oder übersehe ich etwas offensichtliches? [emoji780]

                        SG

                        Steffen `

                        Könntest du mal bitte einen Screenshot deiner Blöcke Posten?

                        Bin um ehrlich zu sein zu faul um von tapatalk nach pc zu gehen und einen Import machen um zu sehen was du gebastelt hast 😉

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

                        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

                          @smueller:

                          hat keiner mehr ne Idee oder übersehe ich etwas offensichtliches? :?: `
                          Offensichtlich machst Du alles falsch was man nur falsch machen kannst.

                          Sorry, aber liest Du hier auch mal, hier im Forum, einige Beiträge zu Blockly?

                          Heute ist es schon etwas spät.

                          Ich weis auch nicht richtig was Du machen willst.

                          Kannst Du das mal etwas näher beschreiben?

                          Wenn wir wissen was Du machen willst, kriegen wir das schon hin.

                          Grüße

                          PS.

                          Export in SPOILER UND code

                          (Erst "spoiler" und dann "code" klicken)

                          1 Reply Last reply Reply Quote 0
                          • S
                            smueller last edited by

                            Hallo zusammen,

                            Schritt 1 war natürlich die Forensuche, in älteren Versionen gab es sogar einen wait-Block, der in der aktuellen Version leider nicht mehr vorkommt.

                            Ich versuche mittels io.Broker ein Skript für Amazon Alexa zu erstellen, welches den Fernseher in den Standby versetzt und dann die Steckerleiste ca. 10 Sekunden später ausmacht (Sender ist ein Broadlink).

                            Problem ist, dass die Kommandos nahezu parallel gesendet werden und der Fernseher keine Zeit hat in den Standby zu gehen.

                            Anbei der Screenshot des Codes. Danke für eure Hilfe.

                            SG

                            Steffen
                            4846_timeout2.jpg

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

                              @smueller:

                              Hallo zusammen,

                              Schritt 1 war natürlich die Forensuche, in älteren Versionen gab es sogar einen wait-Block, der in der aktuellen Version leider nicht mehr vorkommt.

                              Ich versuche mittels io.Broker ein Skript für Amazon Alexa zu erstellen, welches den Fernseher in den Standby versetzt und dann die Steckerleiste ca. 10 Sekunden später ausmacht (Sender ist ein Broadlink).

                              Problem ist, dass die Kommandos nahezu parallel gesendet werden und der Fernseher keine Zeit hat in den Standby zu gehen.

                              Anbei der Screenshot des Codes. Danke für eure Hilfe. `
                              Schritt 1 kann ich fast nicht glauben.

                              In jedem gefühlten zweiten Thread zu Blockly geht es um "Trigger" und "Timeouts"

                              Und sehr häufig steht da "…alles was außerhalb eines Triggers steht, wird EINMALIG bei Scriptstart ausgeführt."

                              "...Timeouts unterbrechen NICHT den Programmablauf." usw. usw....

                              (einen wait-Block habe ich in Blockly noch nie gesehen)

                              Doch nun zu Deinem Blockly.

                              "FernsehSwitch" ist die Steckerleiste?

                              Was ist/macht "Fernseher", "FernseherAn" und "FernseherAus" ?

                              Ein bisschen mehr Infos wäre schön.

                              Dann kriegen wir das auch hin.

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

                                Wenn ich es richtig verstehe wird FernsehSwitch getoggled (an-aus-an-aus)

                                Es gibt keine Unterscheidung von "wahr" oder "unwahr" beim FernsehSwitch - korrekt?

                                Und wenn ich weiterhin deine Aufgabe richtig verstanden habe, dann lautet diese:

                                1.) Wenn Fernsehen = wahr dann schalte die Steckdose für den Fernseher ein und 15 Sekunden später den Fernseher selber (damit die Steckdose bereit ist)

                                2.) Wenn Fernseher = unwahr, dann schalte erst den Fernseher aus und 10 Sekunden später die Steckdose (damit der Fernseher auch wirklich aus ist)

                                [Nachtrag]

                                Ich sehe gerade, dass Du alles was ich bis hier geschrieben habe ja beinahe wortwörtlich so in deinem ersten Post steht 8-)

                                Das würde ich dann sehr simpel "mit Verzögerung" so wie im Screenshot lösen.
                                1917_tv_mit_verzoergung.png

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

                                  @BBTown:

                                  Wenn ich es richtig verstehe ….. `
                                  Wenn der Fragende mal antworten würde und ein wenig Infos liefert, müsste man nicht raten.

                                  Liebe Grüße @BBTown

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

                                    @rantanplan:

                                    Wenn der Fragende mal antworten würde und ein wenig Infos liefert, müsste man nicht raten. ` Er ist ja noch neu an Bord, helfen wir ihm sich zurecht zu finden 😉

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

                                      @BBTown:

                                      Er ist ja noch neu an Bord, helfen wir ihm sich zurecht zu finden 😉 `
                                      Hmmm….Von Dir kann ich noch was lernen 😉

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

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      756
                                      Online

                                      31.7k
                                      Users

                                      79.8k
                                      Topics

                                      1.3m
                                      Posts

                                      5
                                      17
                                      2563
                                      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