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
    14
    1
    389

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.8k

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

                      870

                      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