Navigation

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

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Schleife mit Blockly

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

      Ich bekomme die Schleifen Funktion bei Blockly nicht auf die Reihe.

      Ich möchte das eine Ansage einfach 3x wiederholt wird, aber irgendwie versteh ich die Logik wie das abläuft nicht und schicke mit dem Blockly mein Pi in eine Endlosschleife. Kann mir bitte einer die grundsätzliche Funktion erklären und wie man den Block richtig setzt?

      5076_2018_10_24_11_54_23_window.png

      1 Reply Last reply Reply Quote 0
      • H
        holgerwolf last edited by

        Das Hochzählen des Zählers muss in die Schleife (grüner Kasten).

        Gruß

        Holger

        1 Reply Last reply Reply Quote 0
        • J
          Jan1 last edited by

          Das hatte ich auch schon, dann war der Pi sofort in einer Schleife gehangen.

          Wie setzte ich eigentlich die Schleife "wiederhole x mal" richtig ein? Das Problem liegt wohl darin, das er die Aktion dann eben sehr schnell x mal hintereinander ausführt und ich das nicht mitbekomme.

          Wie geschrieben, mir ist das nicht ganz schlüssig wie die Schleife abläuft und deshalb tu ich mich schwer die richtig einzusetzen.

          Könnte mir einer das Blockly so basteln, dass der Text einfach 3x so hintereinander ausgegeben wird, und keine Überschneidung gibt? Wenn ich das vor mir habe, fällt hoffentlich endlich der Groschen :lol:

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

            @Jan1:

            Könnte mir einer das Blockly so basteln, dass der Text einfach 3x so hintereinander ausgegeben wird, und keine Überschneidung gibt? Wenn ich das vor mir habe, fällt hoffentlich endlich der Groschen :lol: `

            Wenn du in etwa weißt, wie lange die Ausgabe dauert, nimm ein Intervall. Darin kannst du eine Variable hochzählen lassen und nach dem 3. Mal das Intervall beenden.

            Dann wird der Code darin z.B. nach 1000, 2000 und 3000 ms ausgeführt. Hab kein Blockly zur Hand, sonst würde ich es schnell zusammen klicken.

            1 Reply Last reply Reply Quote 0
            • J
              Jan1 last edited by

              Wo muss denn hier das "Stop" hin? 5076_2018_10_25_09_26_44_window.png

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

                Einmal in den Sonst-Abschnitt deiner äußeren Abfrage, damit bei Änderung der Ringing-Variable auf false das Intervall gestoppt wird.

                Und einmal in das Intervall selbst ans Ende mit einer Abfrage "Falls Zähler >= 3, dann stop".

                So wie es aktuell aufgebaut ist, besteht aber die Gefahr, dass das Intervall mehrfach gestartet wird - sofern es möglich ist, dass Ringing mehrfach auf wahr gesetzt wird.

                1 Reply Last reply Reply Quote 0
                • J
                  Jan1 last edited by

                  Danke für Deine Hilfe. Mit der Änderung läuft es. Hatte ich mir schon gedacht, das ich hier noch eine "falls" Bedingung benötige um das wieder zu stoppen.

                  Was mir allerdings überhaupt nicht gefällt, dass das Blockly für das bisschen Funktion so groß sein muss, wenn ich es mit einer Schleife oder Intervall erledigen will. Ich bin wieder zur Urversion zurück und rufe einfach 3 mal die Aktion zeitlich versetzt auf, so wie ich es am Anfang hatte :lol:

                  Das läuft genau wie ich es will, nur dachte ich mir, dass das doch recht primitiv ist und das ganze sollte doch auch eleganter zu lösen sein. Man lernt eben immer dazu 😉

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

                    @Jan1:

                    Das läuft genau wie ich es will, nur dachte ich mir, dass das doch recht primitiv ist und das ganze sollte doch auch eleganter zu lösen sein. Man lernt eben immer dazu 😉 `
                    Manchmal sind die einfachsten Lösungen doch die besten. Größere Anzahlen kann man z.B. so mit einer Schleife realisieren (ohne vorzeitigen Abbruch der Ausgabe):

                    Schleife über i von 1 bis 100
                    -- Timeout (i * 1000ms): Sprachausgabe
                    

                    nur weiß ich nicht, ob variable Timeouts in Blockly möglich sind.

                    In JS ist das ein Dreizeiler (ungefähr).

                    Die Idiotensichere Variante wäre übrigens noch viel komplizierter…

                    • Erkennen ob bereits ein "Sprachausgabeprozess" läuft

                    • Überschneidende Trigger entweder hinten anstellen oder ignorieren

                    • Erkennen, wann die einzelne Sprachausgabe abgeschlossen ist und dann Timeout für die nächste starten (für unterschiedlich lange Texte)

                    • und, und, und...

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    567
                    Online

                    31.7k
                    Users

                    79.9k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    2852
                    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