Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Aktion erst nach X Sekunden erneut auslösen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    503

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    616

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

Aktion erst nach X Sekunden erneut auslösen

Geplant Angeheftet Gesperrt Verschoben Blockly
blocklyscenes
13 Beiträge 5 Kommentatoren 902 Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • L Offline
    L Offline
    ltsalvatore
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich habe ein Blockly-Skript, das eine Aktion ausführt, wenn eine bestimmte Bedingung erfüllt ist. Allerdings möchte ich verhindern, dass die Aktion sofort wiederholt wird – sie soll erst wieder ausgelöst werden, wenn mindestens 60 Sekunden vergangen sind.

    Hier ist mein aktuelles Blockly-Skript:

    12bcf021-3f6c-4560-9235-2195d9fe0dd9-image.png

    Nach etwas Recherche habe ich verstanden, dass man dafür mit Variablen und den Blöcken aus „Datum und Zeit“ arbeiten kann. Aber ich bin mir unsicher, wie genau ich das umsetzen muss – vor allem, wie ich den Zeitvergleich richtig verknüpfe, damit die Aktion erst nach 60 Sekunden erneut ausgeführt wird.

    Hat jemand eine Idee, wie ich das in Blockly umsetzen kann? Welche Blöcke brauche ich, und wie sollte ich sie verbinden?

    Danke für eure Hilfe! 😊

    haus-automatisierungH AsgothianA paul53P 3 Antworten Letzte Antwort
    0
    • L ltsalvatore

      Hallo zusammen,

      ich habe ein Blockly-Skript, das eine Aktion ausführt, wenn eine bestimmte Bedingung erfüllt ist. Allerdings möchte ich verhindern, dass die Aktion sofort wiederholt wird – sie soll erst wieder ausgelöst werden, wenn mindestens 60 Sekunden vergangen sind.

      Hier ist mein aktuelles Blockly-Skript:

      12bcf021-3f6c-4560-9235-2195d9fe0dd9-image.png

      Nach etwas Recherche habe ich verstanden, dass man dafür mit Variablen und den Blöcken aus „Datum und Zeit“ arbeiten kann. Aber ich bin mir unsicher, wie genau ich das umsetzen muss – vor allem, wie ich den Zeitvergleich richtig verknüpfe, damit die Aktion erst nach 60 Sekunden erneut ausgeführt wird.

      Hat jemand eine Idee, wie ich das in Blockly umsetzen kann? Welche Blöcke brauche ich, und wie sollte ich sie verbinden?

      Danke für eure Hilfe! 😊

      haus-automatisierungH Offline
      haus-automatisierungH Offline
      haus-automatisierung
      Developer Most Active
      schrieb am zuletzt editiert von haus-automatisierung
      #2

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

      sie soll erst wieder ausgelöst werden, wenn mindestens 60 Sekunden vergangen sind.

      Dann kannst Du mit einer Sperr-Variablen arbeiten. Du startest dann einen Timer, welcher diese Variable nach 60 Sekunden zurücksetzt. Dafür gibt es schon ganz viele Themen hier im Forum.

      PS: Und schau mal das Video hier an, Du machst ziemlich viele unnötige Vergleiche mit wahr: https://www.youtube.com/watch?v=J9j3K0X9vlc

      🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
      🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
      📚 Meine inoffizielle ioBroker Dokumentation

      CodierknechtC 1 Antwort Letzte Antwort
      0
      • haus-automatisierungH haus-automatisierung

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

        sie soll erst wieder ausgelöst werden, wenn mindestens 60 Sekunden vergangen sind.

        Dann kannst Du mit einer Sperr-Variablen arbeiten. Du startest dann einen Timer, welcher diese Variable nach 60 Sekunden zurücksetzt. Dafür gibt es schon ganz viele Themen hier im Forum.

        PS: Und schau mal das Video hier an, Du machst ziemlich viele unnötige Vergleiche mit wahr: https://www.youtube.com/watch?v=J9j3K0X9vlc

        CodierknechtC Online
        CodierknechtC Online
        Codierknecht
        Developer Most Active
        schrieb am zuletzt editiert von
        #3

        @haus-automatisierung sagte in Aktion erst nach X Sekunden erneut auslösen:

        Du machst ziemlich viele unnötige Vergleiche mit wahr

        @ltsalvatore
        ... und liest den Wert im Trigger unnötigerweise erneut ein.

        https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps

        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
        HmIP|ZigBee|Tasmota|Unifi
        Zabbix Certified Specialist
        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

        1 Antwort Letzte Antwort
        0
        • L ltsalvatore

          Hallo zusammen,

          ich habe ein Blockly-Skript, das eine Aktion ausführt, wenn eine bestimmte Bedingung erfüllt ist. Allerdings möchte ich verhindern, dass die Aktion sofort wiederholt wird – sie soll erst wieder ausgelöst werden, wenn mindestens 60 Sekunden vergangen sind.

          Hier ist mein aktuelles Blockly-Skript:

          12bcf021-3f6c-4560-9235-2195d9fe0dd9-image.png

          Nach etwas Recherche habe ich verstanden, dass man dafür mit Variablen und den Blöcken aus „Datum und Zeit“ arbeiten kann. Aber ich bin mir unsicher, wie genau ich das umsetzen muss – vor allem, wie ich den Zeitvergleich richtig verknüpfe, damit die Aktion erst nach 60 Sekunden erneut ausgeführt wird.

          Hat jemand eine Idee, wie ich das in Blockly umsetzen kann? Welche Blöcke brauche ich, und wie sollte ich sie verbinden?

          Danke für eure Hilfe! 😊

          AsgothianA Offline
          AsgothianA Offline
          Asgothian
          Developer
          schrieb am zuletzt editiert von Asgothian
          #4

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

          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

          CodierknechtC paul53P 2 Antworten Letzte Antwort
          0
          • AsgothianA 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.

            CodierknechtC Online
            CodierknechtC Online
            Codierknecht
            Developer Most Active
            schrieb am zuletzt editiert von
            #5

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

            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi
            Zabbix Certified Specialist
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            1 Antwort Letzte Antwort
            0
            • AsgothianA Offline
              AsgothianA Offline
              Asgothian
              Developer
              schrieb am zuletzt editiert von
              #6

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

              ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
              "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

              1 Antwort Letzte Antwort
              0
              • AsgothianA 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.

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #7

                @asgothian sagte: Zeitvergleich mit Variable:

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

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                AsgothianA 1 Antwort Letzte Antwort
                0
                • L ltsalvatore

                  Hallo zusammen,

                  ich habe ein Blockly-Skript, das eine Aktion ausführt, wenn eine bestimmte Bedingung erfüllt ist. Allerdings möchte ich verhindern, dass die Aktion sofort wiederholt wird – sie soll erst wieder ausgelöst werden, wenn mindestens 60 Sekunden vergangen sind.

                  Hier ist mein aktuelles Blockly-Skript:

                  12bcf021-3f6c-4560-9235-2195d9fe0dd9-image.png

                  Nach etwas Recherche habe ich verstanden, dass man dafür mit Variablen und den Blöcken aus „Datum und Zeit“ arbeiten kann. Aber ich bin mir unsicher, wie genau ich das umsetzen muss – vor allem, wie ich den Zeitvergleich richtig verknüpfe, damit die Aktion erst nach 60 Sekunden erneut ausgeführt wird.

                  Hat jemand eine Idee, wie ich das in Blockly umsetzen kann? Welche Blöcke brauche ich, und wie sollte ich sie verbinden?

                  Danke für eure Hilfe! 😊

                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

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

                  Einfachste Version:

                  Blockly_temp.JPG

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @asgothian sagte: Zeitvergleich mit Variable:

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

                    AsgothianA Offline
                    AsgothianA Offline
                    Asgothian
                    Developer
                    schrieb am zuletzt editiert von Asgothian
                    #9

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

                    ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                    "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                    paul53P CodierknechtC 2 Antworten Letzte Antwort
                    0
                    • AsgothianA 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.

                      paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #10

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

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      AsgothianA 1 Antwort Letzte Antwort
                      0
                      • AsgothianA 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.

                        CodierknechtC Online
                        CodierknechtC Online
                        Codierknecht
                        Developer Most Active
                        schrieb am zuletzt editiert von
                        #11

                        @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 :grinning: :grinning:

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

                        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                        HmIP|ZigBee|Tasmota|Unifi
                        Zabbix Certified Specialist
                        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                        1 Antwort Letzte Antwort
                        0
                        • paul53P paul53

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

                          AsgothianA Offline
                          AsgothianA Offline
                          Asgothian
                          Developer
                          schrieb am zuletzt editiert von
                          #12

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

                          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                          1 Antwort Letzte Antwort
                          0
                          • L Offline
                            L Offline
                            ltsalvatore
                            schrieb am zuletzt editiert von ltsalvatore
                            #13

                            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 Antwort Letzte Antwort
                            1
                            Antworten
                            • In einem neuen Thema antworten
                            Anmelden zum Antworten
                            • Älteste zuerst
                            • Neuste zuerst
                            • Meiste Stimmen


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            371

                            Online

                            32.6k

                            Benutzer

                            81.9k

                            Themen

                            1.3m

                            Beiträge
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Anmelden

                            • Du hast noch kein Konto? Registrieren

                            • Anmelden oder registrieren, um zu suchen
                            • Erster Beitrag
                              Letzter Beitrag
                            0
                            • Home
                            • Aktuell
                            • Tags
                            • Ungelesen 0
                            • Kategorien
                            • Unreplied
                            • Beliebt
                            • GitHub
                            • Docu
                            • Hilfe