Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst] Problem mit einer "while"-Schleife

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Problem mit einer "while"-Schleife

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

      @mumurik sagte:

      Schreibe ich die Funktion in Javascript, funktioniert das Script wie gewollt

      ... aber nur mit await und async. Das kennt Blockly nicht. Das, was Du möchtest, macht man mit einem Intervall von 23 s.

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

        @paul53

        wo finde ich in Blockly den Intervall?

        Bin nicht so fit in Blockly, könntest du eventuell die gewünschte Funktion in Blockly für mich nachbauen? Dafür wäre ich dir sehr dankbar!

        lobomau BBTown 2 Replies Last reply Reply Quote 0
        • lobomau
          lobomau @mumurik last edited by

          @mumurik ich glaube ganz einfach die 3s auf 23s erhöhen. Die beiden Zeiten laufen ja nicht nacheinander los, sondern gleichzeitig/parallel. Also schon nach 3s ist false und nach 20s true.

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

            @mumurik sagte in Problem mit einer "while"-Schleife:

            wo finde ich in Blockly den Intervall?

            schau mal ...
            379ad597-6ca9-4e8c-adba-33350581d3ca-grafik.png

            1 Reply Last reply Reply Quote 0
            • M
              mumurik last edited by mumurik

              Nein, kriege das nicht hin 😞

              Kann mir jemand dieses JavaScript in Blockly nachbauen?

              async function reset() {
                while (getState("mihome.0.devices.state").val != false) {
                  switchOn();
                  await sleep(3000);
                  switchOff();
                  await sleep(20000);
                }
              }
              
              
              on({id: 'javascript.0.Bewaesserung.resetBaraban'/*resetBaraban*/, change: "ne"}, function (obj) {
                  var value = obj.state.val;
                if (value == true) {
                  resetBaraban();
                }
              });
              
              async function switchOn() {
                  setState("sonoff.0.Gartenbewaesserung.POWER", true);
              }
              
              async function switchOff() {
                  setState("sonoff.0.Gartenbewaesserung.POWER", false);
              }
              
              function sleep(ms) {
                return new Promise(resolve => setTimeout(resolve, ms));
              }
              

              Danke im Voraus!

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

                @mumurik sagte:

                kriege das nicht hin

                Dann versuche es mal so:

                Blockly_temp.JPG

                Trigger "ist größer als letztes" bedeutet Wertänderung von false auf true.

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

                  @paul53 sagte in Problem mit einer "while"-Schleife:

                  @paul53 sagte:
                  Dann versuche es mal so:

                  Super, so läuft's, vielen Dank!!!

                  Und wie mache ich das mit einer "for"-Schleife? So wird es ja nicht klappen:

                  e4df4302-e0c5-4ce1-b3d0-72964b947625-image.png

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

                    @mumurik sagte:

                    Und wie mache ich das mit einer "for"-Schleife?

                    Gar nicht. Die for-Schleife dient zum Abarbeiten einer bestimmten Anzahl - i.d.R. alle Elemente eines Arrays. Verzögerungen innerhalb der Schleifen-Funktion führen nicht zur Verzögerung des Schleifen-Durchlaufs, sondern es werden N Timer quasi gleichzeitig gestartet.
                    Was soll die Funktion goTo(x) machen ?

                    EDIT: Im Prinzip muss man es so machen wie oben, nur dass die Abbruch-Bedingung anders ist.

                    Blockly_temp.JPG

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

                      @paul53 sagte in Problem mit einer "while"-Schleife:

                      Was soll die Funktion goTo(x) machen ?

                      Ich habe eine hydraulische Wassertrommel mit 6 Ausgängen. Sobald die Wasserzufuhr unterbrochen wird (in meinem Fall gesteuert über einen Sonoff Basic) und der Wasserdruck in der Trommel nachlässt, dreht sich die Trommel weiter zum nächsten Ausgang (also z.B. von Ausgang 1 zum Ausgang 2) usw.

                      Jetzt habe ich am Ausgang 1 einen Tür/Fenstersensor angebracht, so dass ich immer weiß, wann die Trommel am Ausgang 1 sich befindet. Nun würde ich gerne die Trommel soweit ansteuern, dass ich über die VIS+Datenpunkt einen bestimmten Ausgang manuell ansteuern kann, z.B. GoTo Ausgang 3, deswegen dachte ich, ich könnte mit einer var-Schleife das gewünschte Ergebnis erreichen...

                      Deswegen denke ich, dein Vorschlag müsste etwas anders aussehen, oder?

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

                        @mumurik sagte:

                        dein Vorschlag müsste etwas anders aussehen, oder?

                        Weshalb ? Die Funktion goTo(x) kann mit der gewünschten Anzahl von 3-s-Impulsen aufgerufen werden.

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

                          @paul53

                          achso, stimmt natürlich, vielen Dank!!!

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          880
                          Online

                          32.0k
                          Users

                          80.4k
                          Topics

                          1.3m
                          Posts

                          4
                          14
                          1435
                          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