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. [Gelöst] Trigger 3 x in 15 minuten >>> dann

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    320

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

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

[Gelöst] Trigger 3 x in 15 minuten >>> dann

Geplant Angeheftet Gesperrt Verschoben Blockly
blockly
53 Beiträge 6 Kommentatoren 5.2k Aufrufe 6 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.
  • N nevermind

    @muckel

    im Prinzip so:

    Unbenannt.PNG

    (Das ist aus meinem Unifi Anwesendheits-Script)

    M Offline
    M Offline
    muckel
    schrieb am zuletzt editiert von
    #42

    @nevermind

    Danke. So geht das! :handshake:

    1 Antwort Letzte Antwort
    0
    • AsgothianA Asgothian

      @muckel
      Ich hab da was, aber nicht in Blockly.

      Das ist bei mir tief in nem anderen Script drin, deswegen hab ich nur die Funtkion als "normales" JS Script raus geholt.

      Was noch zu tun ist: Du must an Stelle von 'javascript.0.SwitchObject' die ID des States den du überwachen willst eintragen, und am Kommentar die Aktion die du machen willst.

      Das ganze funktioniert über eine Warteschlange, in die die Timeouts hinein geschoben werden, und die, wenn sie voll ist, die eigentliche Aktion ausführt. Wenn die Timeouts auslaufen entfernen sie sich aus der Warteschlange.

      var queue = [];
      var timeout = 1; // gewünschter Zeitraum in Minuten
      var numberOfEvents = 3; // Anzahl der notwendigen Events innerhalb des Zeitraums
      
      on ({id:'javascript.0.SwitchObject', change:'gt'}, function(obj) { 
          if (queue.length > numberOfEvents - 2) { 
              console.log( (queue.length+1) +  " events triggered within " + timeout + " minutes"); 
              // Hier das aktivieren was nach 15 minuten aktiviert werden soll 
              while (queue.length > 0) { 
                  let v = queue.shift()
                  if (v) clearTimeout(v)
              }
          } else {
              queue.push(setTimeout(function() {
                  console.log("Event timed out");
                  if (queue.length > 0) { 
                      queue.shift();
                  }
              }, timeout * 60 * 1000)); 
          }
      })
      
      M Offline
      M Offline
      muckel
      schrieb am zuletzt editiert von
      #43

      @Asgothian ´
      Ich habe mich mit Javascript noch nicht beschäftigt.
      Wenn ich nur auf "Aktualisierung" triggern möchte, was muss ich statt change:'gt' eingeben?
      Ich finde das im Forum nicht, oder suche mit der falschen Frage.

      on ({id:'deconz.0.Sensors.18.buttonevent', change:'gt'}, function(obj) {

      AsgothianA paul53P 2 Antworten Letzte Antwort
      0
      • M muckel

        @Asgothian ´
        Ich habe mich mit Javascript noch nicht beschäftigt.
        Wenn ich nur auf "Aktualisierung" triggern möchte, was muss ich statt change:'gt' eingeben?
        Ich finde das im Forum nicht, oder suche mit der falschen Frage.

        on ({id:'deconz.0.Sensors.18.buttonevent', change:'gt'}, function(obj) {

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

        @muckel
        fuer aktualisiert kann das change: 'gt' weg
        fuer geändert muesste da 'ne' statt 'gt' stehen.

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

        M 1 Antwort Letzte Antwort
        0
        • M muckel

          @Asgothian ´
          Ich habe mich mit Javascript noch nicht beschäftigt.
          Wenn ich nur auf "Aktualisierung" triggern möchte, was muss ich statt change:'gt' eingeben?
          Ich finde das im Forum nicht, oder suche mit der falschen Frage.

          on ({id:'deconz.0.Sensors.18.buttonevent', change:'gt'}, function(obj) {

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

          @muckel sagte:

          Wenn ich nur auf "Aktualisierung" triggern möchte

          on ({id:'deconz.0.Sensors.18.buttonevent'}, function(obj) { // triggert bei jeder Aktualisierung des Zeitstempels
          

          siehe Doku.

          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
          • AsgothianA Asgothian

            @muckel
            fuer aktualisiert kann das change: 'gt' weg
            fuer geändert muesste da 'ne' statt 'gt' stehen.

            M Offline
            M Offline
            muckel
            schrieb am zuletzt editiert von
            #46

            @Asgothian
            @paul53
            Dank eurer Unterstützung funktioniert das Script jetzt optimal.

            Danke nochmals für eure Hilfsbereitschaft! :smiley:

            1 Antwort Letzte Antwort
            0
            • rantanplanR Offline
              rantanplanR Offline
              rantanplan
              schrieb am zuletzt editiert von
              #47

              Ich hier mal was in Blockly gebastelt. Vielleicht kanns jemand gebrauchen.
              Maximale Ereignisse innerhalb eines Zeitraums

              Grüße

              Rantanplan

              CCU3 / MS Server 2019(VM) / Scripten mit Blockly

              M 1 Antwort Letzte Antwort
              0
              • rantanplanR rantanplan

                Ich hier mal was in Blockly gebastelt. Vielleicht kanns jemand gebrauchen.
                Maximale Ereignisse innerhalb eines Zeitraums

                Grüße

                M Offline
                M Offline
                muckel
                schrieb am zuletzt editiert von
                #48

                @rantanplan

                Danke, ich habs mir mal geklaut. :wink:
                Kann man sicher brauchen.

                rantanplanR 1 Antwort Letzte Antwort
                0
                • N nevermind

                  Ja, so geht es natürlich und entspricht deinen Anforderungen. Ich halte es jedoch in sofern für nicht ganz optimal, da es einzelne 15 Minuten Blöcke betrachtet und nicht die letzten 15 Minuten. Beispiel

                  14:00 Uhr: 1. Rüttler, Timer startet
                  14:14 Uhr: 2. Rüttler
                  14:15 Uhr: Timer stoppt
                  14:16 Uhr: 3. Rüttler, Timer startet neu
                  14:17 Uhr: 4. Rüttler

                  Der 4. Rüttler ist der Zweite im aktuellen Intervall, jedoch der Dritte innerhalb der letzten 15 Minuten. Meiner Meinung nach sollte die Aktion daher beim 4. Rüttler starten, wobei ich aber deinen Anwendungsfall nicht genau kenne. Kann also sein, dass der Vorschlag von @paul53 eher deinen Anforderungen entspricht.

                  N Offline
                  N Offline
                  nevermind
                  schrieb am zuletzt editiert von
                  #49

                  Mag sein, dass ich mich irre, aber dieses Problem hättest du bei deinem Script immernoch, oder?

                  @nevermind sagte in [Gelöst] Trigger 3 x in 15 minuten >>> dann:

                  Ja, so geht es natürlich und entspricht deinen Anforderungen. Ich halte es jedoch in sofern für nicht ganz optimal, da es einzelne 15 Minuten Blöcke betrachtet und nicht die letzten 15 Minuten. Beispiel

                  14:00 Uhr: 1. Rüttler, Timer startet
                  14:14 Uhr: 2. Rüttler
                  14:15 Uhr: Timer stoppt
                  14:16 Uhr: 3. Rüttler, Timer startet neu
                  14:17 Uhr: 4. Rüttler

                  Der 4. Rüttler ist der Zweite im aktuellen Intervall, jedoch der Dritte innerhalb der letzten 15 Minuten. Meiner Meinung nach sollte die Aktion daher beim 4. Rüttler starten, wobei ich aber deinen Anwendungsfall nicht genau kenne. Kann also sein, dass der Vorschlag von @paul53 eher deinen Anforderungen entspricht.

                  1 Antwort Letzte Antwort
                  0
                  • M muckel

                    @rantanplan

                    Danke, ich habs mir mal geklaut. :wink:
                    Kann man sicher brauchen.

                    rantanplanR Offline
                    rantanplanR Offline
                    rantanplan
                    schrieb am zuletzt editiert von
                    #50

                    @muckel sagte in [Gelöst] Trigger 3 x in 15 minuten >>> dann:

                    @rantanplan

                    Danke, ich habs mir mal geklaut. :wink:
                    Kann man sicher brauchen.

                    Jetzt bin ich etwas irritiert. Deckt das nicht Dein Problem ab?

                    Rantanplan

                    CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                    M 1 Antwort Letzte Antwort
                    0
                    • rantanplanR rantanplan

                      @muckel sagte in [Gelöst] Trigger 3 x in 15 minuten >>> dann:

                      @rantanplan

                      Danke, ich habs mir mal geklaut. :wink:
                      Kann man sicher brauchen.

                      Jetzt bin ich etwas irritiert. Deckt das nicht Dein Problem ab?

                      M Offline
                      M Offline
                      muckel
                      schrieb am zuletzt editiert von
                      #51

                      @rantanplan
                      @nevermind

                      Rantanplans Script ist so ähnlich wie meines. 15 Minuten Blöcke. Allerdings etwas schöner gelöst als meines.

                      Die charmantere Lösung ist die von Nevermind. Hier wird kontinuierlich innerhalb gleitender 15 Minuten abgefragt. first in first out. Die 15 Minuten wandern minütlich weiter. Somit kann es nicht zu dem von ihm beschriebenen Fall kommen.

                      Ich denke beide Scripte haben ihre Berechtigung je nach Anwendungsfall.

                      So, diplomatischer kann ich es nicht. :relaxed:

                      1 Antwort Letzte Antwort
                      0
                      • N Offline
                        N Offline
                        nevermind
                        schrieb am zuletzt editiert von nevermind
                        #52

                        @muckel

                        Und wie hast du es jetzt letztendlich gelöst? Mit dem Script von @Asgothian? Das mit seiner queue ist ja im Prinzip so ähnlich wie das was ich meinte und die wahrscheinlich beste Lösung, oder?

                        M 1 Antwort Letzte Antwort
                        0
                        • N nevermind

                          @muckel

                          Und wie hast du es jetzt letztendlich gelöst? Mit dem Script von @Asgothian? Das mit seiner queue ist ja im Prinzip so ähnlich wie das was ich meinte und die wahrscheinlich beste Lösung, oder?

                          M Offline
                          M Offline
                          muckel
                          schrieb am zuletzt editiert von
                          #53

                          @nevermind

                          Ich habe mein ursprüngliches script mit dem queue von @Asgothian zusammengeführt und somit sicherheitstechnisch erweitert.
                          Ich finde, das ist die optimale Lösung.

                          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

                          795

                          Online

                          32.5k

                          Benutzer

                          81.7k

                          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