Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Aktion erst nach X Sekunden erneut auslösen

    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

    Aktion erst nach X Sekunden erneut auslösen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Asgothian
      Asgothian Developer @ltsalvatore last edited by Asgothian

      @ltsalvatore Zeitvergleich mit Variable:

      Screenshot 2025-03-10 at 10.57.26.png

      natürlich musst du die Variable Zeitstempel zu beginn des Skriptes noch initialisieren. Z.Bsp. mit 0 oder dem 'aktuelle Zeit' Block. Und das was nur alle 60 sekunden stattfinden soll muss natürlich auch in den Mache Zweig - das nachzubauen war ich zu faul 🙂

      A.
      p.s. Beispiel hier nur weil in dem (echt hilfreichen) Post von @codierknecht kein Zeit-Beispiel enthalten ist.

      Codierknecht paul53 2 Replies Last reply Reply Quote 0
      • Codierknecht
        Codierknecht Developer Most Active @Asgothian last edited by

        @asgothian sagte in Aktion erst nach X Sekunden erneut auslösen:

        weil in dem Post von @codierknecht kein Zeit-Beispiel enthalten ist

        Ich glaube, das würde an der Ecke auch zu sehr ins Detail gehen.
        Vielleicht erweitere ich das ja bei Gelegenheit noch um ein paar Beispiele.

        Ich bin mir allerdings noch nicht sicher, welche der möglichen Varianten da effektiver (bzw. besser lesbar) ist

        • bool'sche Sperrvariable und Timeout
        • Berechnung der abgelaufenen Zeit seit letzter erfolgreicher Ausführung

        Vielleicht sollte man da beide Möglichkeiten aufzeigen.

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

          @codierknecht sagte in Aktion erst nach X Sekunden erneut auslösen:

          @asgothian sagte in Aktion erst nach X Sekunden erneut auslösen:

          weil in dem Post von @codierknecht kein Zeit-Beispiel enthalten ist

          Ich glaube, das würde an der Ecke auch zu sehr ins Detail gehen.

          Sehe ich durchaus auch so.

          Vielleicht erweitere ich das ja bei Gelegenheit noch um ein paar Beispiele.

          Ich bin mir allerdings noch nicht sicher, welche der möglichen Varianten da effektiver (bzw. besser lesbar) ist

          • bool'sche Sperrvariable und Timeout
          • Berechnung der abgelaufenen Zeit seit letzter erfolgreicher Ausführung

          Ich denke beides ist was die Lesbarkeit angeht gleich verständlich / unverständlich.

          Ich hab mir angewöhnt:

          • Sperrvariable immer dann wenn ich sofort agieren und eine erneute Ausführung behindern will
          • Timeout immer dann wenn ich erst nach Ablauf der Sperrzeit agieren will.

          Warum ?

          • Ressourcen: Sperrvariable braucht weniger Ressourcen als Timeout
          • Lesbarkeit - ein Blick auf den Code zeigt sofort ob 'Aktion sofort' oder 'Aktion später'

          So würde ich das im Zweifelsfall auch als Beispiele aufzeigen - wobei das eine Beispiel (Aktion nach Ablauf einer Sperrzeit) hast Du schon.

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

            @asgothian sagte: Zeitvergleich mit Variable:

            Das funktioniert so nicht, da "aktuelle Zeit in Sekunden" die Sekunden der Uhrzeit enthält.

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

              @ltsalvatore sagte: soll erst wieder ausgelöst werden, wenn mindestens 60 Sekunden vergangen sind.

              Einfachste Version:

              Blockly_temp.JPG

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

                @paul53 Stimmt.. man sollte keinen JS code in Blockly nachbauen. Ich war davon ausgegangen das aktuelle Zeit sich in Date.now() übersetzt.
                Genau das nutz ich auch - ich selber nutze Blockly eigentlich nicht.

                Dummer Fehler. sorry.

                So wird ein Schuh draus - den leeren Timeout mag ich nicht.

                Screenshot 2025-03-10 at 11.47.09.png

                A.

                paul53 Codierknecht 2 Replies Last reply Reply Quote 0
                • paul53
                  paul53 @Asgothian last edited by

                  @asgothian sagte: den leeren Timeout mag ich nicht.

                  In Javascript ist er nicht leer, denn die Timer-Variable muss auf null gesetzt werden, was Blockly seit Version 7.0.5 selbst macht.

                  Asgothian 1 Reply Last reply Reply Quote 0
                  • Codierknecht
                    Codierknecht Developer Most Active @Asgothian last edited by

                    @asgothian sagte in Aktion erst nach X Sekunden erneut auslösen:

                    den leeren Timeout mag ich nicht

                    Pack 'nen Kommentar rein - dann ist der nicht mehr leer 😀 😀

                    b0f92160-b323-485f-86a0-92b3ea66a915-image.png

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

                      @paul53 Ich denke wir können uns darauf einigen das wir da unterschiedliche Ansichten haben.

                      Ich nutz das Konstrukt mit einer Variablen und date.now() in JS an vielen Stellen. Das ich das im ersten Blockly versuch ungetestet falsch gepostet hab war nicht gut, ist aber passiert.

                      Ich werd weiter keine Timeouts nutzen nur um andere Aktionen zu blockieren. Und ich halte das weiterhin auch in Blockly nicht für die Ideale Variante. Aber das bin ich - das dürfen andere gerne anders sehen.

                      A.

                      1 Reply Last reply Reply Quote 0
                      • L
                        ltsalvatore last edited by ltsalvatore

                        Hallo zusammen,

                        zunächst einmal vielen Dank für die rege Beteiligung – genau das zeichnet dieses Forum aus!

                        Letztendlich habe ich mich der Einfachheit halber für die Variante von Paul53 entschieden. Diese war für mich am verständlichsten, ließ sich am einfachsten umsetzen und hat auf Anhieb funktioniert.

                        Das Ganze sieht dann jetzt so aus:

                        3fbb72fd-9770-4d1a-b50a-12bf9df735f4-image.png

                        Inwiefern diese Lösung im Vergleich zu anderen Varianten hinsichtlich der Systemauslastung besser oder schlechter ist, kann ich schwer beurteilen.

                        Nochmals herzlichen Dank an alle für die Unterstützung! 😊

                        PS: Ein zusätzliches Dankeschön für die Tipps zur Script-Optimierung! Diese werde ich mir bei Gelegenheit noch einmal genauer anschauen und versuchen bei meinen bestehenden und neuen Scripts umsetzen.

                        Viele Grüße

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        391
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        blockly scenes
                        5
                        13
                        375
                        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