Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Schleife mit Blockly

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

Schleife mit Blockly

Scheduled Pinned Locked Moved Skripten / Logik
8 Posts 3 Posters 2.9k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    Jan1
    wrote on last edited by
    #1

    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
    0
    • H Offline
      H Offline
      holgerwolf
      wrote on last edited by
      #2

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

      Gruß

      Holger

      1 Reply Last reply
      0
      • J Offline
        J Offline
        Jan1
        wrote on last edited by
        #3

        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
        0
        • AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          wrote on last edited by
          #4

          @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.

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          1 Reply Last reply
          0
          • J Offline
            J Offline
            Jan1
            wrote on last edited by
            #5

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

            1 Reply Last reply
            0
            • AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              wrote on last edited by
              #6

              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.

              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

              1 Reply Last reply
              0
              • J Offline
                J Offline
                Jan1
                wrote on last edited by
                #7

                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
                0
                • AlCalzoneA Offline
                  AlCalzoneA Offline
                  AlCalzone
                  Developer
                  wrote on last edited by
                  #8

                  @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...

                  Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                  1 Reply Last reply
                  0
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  275

                  Online

                  32.4k

                  Users

                  81.4k

                  Topics

                  1.3m

                  Posts
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                  ioBroker Community 2014-2025
                  logo
                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Recent
                  • Tags
                  • Unread 0
                  • Categories
                  • Unreplied
                  • Popular
                  • GitHub
                  • Docu
                  • Hilfe