Skip to content
  • Home
  • 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
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. [vorerst gelöst] Suche anders geartete Zeitverzögerung

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    6
    1
    226

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    220

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    893

[vorerst gelöst] Suche anders geartete Zeitverzögerung

Scheduled Pinned Locked Moved Blockly
blockly
16 Posts 5 Posters 901 Views 3 Watching
  • 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.
  • docadamsD Offline
    docadamsD Offline
    docadams
    wrote on last edited by docadams
    #1

    Hallo,
    ich möchte ein Relais einschalten und nach z.B. einer Minute wieder ausschalten. Das könnte man mit der Zeitverzögerung hinbekommen. Dann kann ich aber nicht irgendwie noch eingreifen. z.B. nach 10 Sekunden mittels Taster bei Bedarf wieder ausschalten.

    Ich dachte an eine Art Zeitschleife von 1 Minute, die unabhängig unterbrochen werden kann. Gibt es so etwas?
    Natürlich bin ich auch für elegantere Lösungen offen ;-)

    HomoranH AsgothianA 3 Replies Last reply
    0
    • docadamsD docadams

      Hallo,
      ich möchte ein Relais einschalten und nach z.B. einer Minute wieder ausschalten. Das könnte man mit der Zeitverzögerung hinbekommen. Dann kann ich aber nicht irgendwie noch eingreifen. z.B. nach 10 Sekunden mittels Taster bei Bedarf wieder ausschalten.

      Ich dachte an eine Art Zeitschleife von 1 Minute, die unabhängig unterbrochen werden kann. Gibt es so etwas?
      Natürlich bin ich auch für elegantere Lösungen offen ;-)

      HomoranH Do not disturb
      HomoranH Do not disturb
      Homoran
      Global Moderator Administrators
      wrote on last edited by
      #2

      @docadams
      Dafür ist der Baustein timeout

      kein Support per PN! - Fragen im Forum stellen -
      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
      Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Reply Last reply
      1
      • docadamsD docadams

        Hallo,
        ich möchte ein Relais einschalten und nach z.B. einer Minute wieder ausschalten. Das könnte man mit der Zeitverzögerung hinbekommen. Dann kann ich aber nicht irgendwie noch eingreifen. z.B. nach 10 Sekunden mittels Taster bei Bedarf wieder ausschalten.

        Ich dachte an eine Art Zeitschleife von 1 Minute, die unabhängig unterbrochen werden kann. Gibt es so etwas?
        Natürlich bin ich auch für elegantere Lösungen offen ;-)

        AsgothianA Offline
        AsgothianA Offline
        Asgothian
        Developer
        wrote on last edited by Asgothian
        #3

        @docadams

        in JS eigentlich ganz einfach:

        var MyTimeoutVariable = null
        on({id: 'triggerobjekt fuer timeout', change: 'ne'}, 
           function() { 
              MyTimeoutVariable = setTimeout(function() { setState('relaisobject',false); } );
              setState('relaisobject', true);
        })
        
        on ({ id:'triggerobjekt zum abbruch', change:'ne'}, 
                function () {
                     if (MyTimeoutVariable) clearTimeout(MyTimeoutVariable); 
                     MyTimeoutVariable = null;});
        

        A.

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

        1 Reply Last reply
        1
        • docadamsD docadams

          Hallo,
          ich möchte ein Relais einschalten und nach z.B. einer Minute wieder ausschalten. Das könnte man mit der Zeitverzögerung hinbekommen. Dann kann ich aber nicht irgendwie noch eingreifen. z.B. nach 10 Sekunden mittels Taster bei Bedarf wieder ausschalten.

          Ich dachte an eine Art Zeitschleife von 1 Minute, die unabhängig unterbrochen werden kann. Gibt es so etwas?
          Natürlich bin ich auch für elegantere Lösungen offen ;-)

          AsgothianA Offline
          AsgothianA Offline
          Asgothian
          Developer
          wrote on last edited by
          #4

          @docadams

          Nachtrag: So wie das script ist kannst du es ggf. mehrfach triggern. Es sollte also noch eine Abfrage rein, und am setTimeout hatte ich die Dauer gelöscht. Damit wird der Timeout zum abschalten auf 10 Sekunden auf das letzte Auftreten des Triggers gesetzt.

          var MyTimeoutVariable = null
          on({id: 'triggerobjekt fuer timeout', change: 'ne'}, 
             function() { 
                if (MyTimeOut) clearTimeOut(MyTimeout);
                MyTimeoutVariable = setTimeout(function() { setState('relaisobject',false); } );
                setState('relaisobject', true);
          }, 10000);
           
          on ({ id:'triggerobjekt zum abbruch', change:'ne'}, 
                  function () {
                       if (MyTimeoutVariable) clearTimeout(MyTimeoutVariable); 
                       MyTimeoutVariable = null;
          });
          
          

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

          1 Reply Last reply
          0
          • docadamsD Offline
            docadamsD Offline
            docadams
            wrote on last edited by docadams
            #5

            Ich arbeite mich ja erst ein.
            Ich habe ein unter common ein leeres Javaskript erzeugt und dein Skript hineinkopiert.
            Ist das richtig so? Und wie handle ich das weiter?

            Und jetzt noch eine etwas anspruchsvollere Frage.
            Ist es möglich, die Timeoutdauer, hier also die 10000, irgendwie zentral, z.B. als Datenpunkt Typ Zahl, zu hinterlegen?
            Der Hintergrund ist folgender: Das Timeout benötige ich für die Dauer, in der meine Rolläden hoch und runter fahren. Zur Zeit kurbele ich noch, will aber im Frühjahr die Rollläden motorisieren. Ich weiß also noch nicht, wie lange konkret die Dauer sein wird. Ich möchte aber schon mal mit dem Programmieren beginnen.
            Wäre nur schön, wenn ich das dann einmalig für alle anpassen könnte.

            1 Reply Last reply
            0
            • docadamsD Offline
              docadamsD Offline
              docadams
              wrote on last edited by docadams
              #6

              gelöscht.

              1 Reply Last reply
              0
              • docadamsD Offline
                docadamsD Offline
                docadams
                wrote on last edited by
                #7

                Darf ich noch mal anfragen, wie ich das von dir vorgeschlagene Script nutzen kann? Ich habe solchen Code noch nie importiert.

                AsgothianA 1 Reply Last reply
                0
                • docadamsD docadams

                  Darf ich noch mal anfragen, wie ich das von dir vorgeschlagene Script nutzen kann? Ich habe solchen Code noch nie importiert.

                  AsgothianA Offline
                  AsgothianA Offline
                  Asgothian
                  Developer
                  wrote on last edited by
                  #8

                  @docadams
                  Darst du.. du gehst auf den Eintag <> Script links, dan bekommst du die Liste der bei Dir laufenden Scripte.
                  Dann erzeugst du mit + ein neues Script - wichtig, ein Script vom Typ JS

                  Dann kopierst du den Text der oben Steht in das rechte Fenster und speicherst den.. Damit hast das ganze dann erstmal drin.

                  Jetzt noch ein paar Warnhinweise:
                  da wo ich 'triggerobjekt ...' im Script stehen habe musst du die ID des Datenpunktes eintragen, mit dem du trigger willst.
                  da wo 'relaisobject' steht muss die ID es Datenpunktes den du schalten willst stehen

                  Wenn du die Dauer des Timeout ueber einen Datenpunkt steuern willst , dann musst du an Stelle der 10000
                  getState('id des Datenpunktes mit der Zahl') schreiben.

                  A.

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

                  1 Reply Last reply
                  1
                  • docadamsD Offline
                    docadamsD Offline
                    docadams
                    wrote on last edited by docadams
                    #9

                    Vielen Dank.

                    wenn ich das reinkopiere erscheint zwischen jeder Zeile eine Leerzeile, die ich dann manuell rauslösche. Ist das korrekt?
                    Aber meine eigentliche Frage ist, wie binde ich das Skript nun ein? Ich mache den Rest in Blockly. Kann ich das Skript dann irgendwie als Befehl/Block in Blockly aufrufen?

                    Dein letzter Hinweis greift eine künftige Frage voraus. Mein Ziel wird sein, eine variierende Zeit zwischen zwei zu steuernden Ereignissen zu programmieren. Mir ist es schon gelungen, mit Zufallszahl einen Datenpunkt "Zufall5-15" zu befüllen. Dann bräuchte ich dann nur noch statt der 1000

                    getState('id des Datenpunktes Zufall5-15')

                    anzusprechen. Das find ich gut.
                    Allerdings muss diese Zufallszahl dann unbedingt in Milisekunden erscheinen, oder?

                    AsgothianA 1 Reply Last reply
                    0
                    • docadamsD docadams

                      Vielen Dank.

                      wenn ich das reinkopiere erscheint zwischen jeder Zeile eine Leerzeile, die ich dann manuell rauslösche. Ist das korrekt?
                      Aber meine eigentliche Frage ist, wie binde ich das Skript nun ein? Ich mache den Rest in Blockly. Kann ich das Skript dann irgendwie als Befehl/Block in Blockly aufrufen?

                      Dein letzter Hinweis greift eine künftige Frage voraus. Mein Ziel wird sein, eine variierende Zeit zwischen zwei zu steuernden Ereignissen zu programmieren. Mir ist es schon gelungen, mit Zufallszahl einen Datenpunkt "Zufall5-15" zu befüllen. Dann bräuchte ich dann nur noch statt der 1000

                      getState('id des Datenpunktes Zufall5-15')

                      anzusprechen. Das find ich gut.
                      Allerdings muss diese Zufallszahl dann unbedingt in Milisekunden erscheinen, oder?

                      AsgothianA Offline
                      AsgothianA Offline
                      Asgothian
                      Developer
                      wrote on last edited by
                      #10

                      @docadams
                      Das script läuft automatisch, und triggers darauf das die beiden trigger Datenpunkte auf true gehen.
                      Du kannst auch im script rechnen, in dem du getState()*1000 machst

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

                      1 Reply Last reply
                      0
                      • DutchmanD Offline
                        DutchmanD Offline
                        Dutchman
                        Developer Most Active Administrators
                        wrote on last edited by
                        #11

                        hier mal zum Verständnis das selbe in blockly, trigger löst timer aus worin ein object gesteuert wird.
                        Wird der trigger nochmal aufgerufen startet der time neu (set time-out / reset-timeout)

                        Schermafbeelding 2019-03-25 om 08.29.23.png

                        1 Reply Last reply
                        0
                        • docadamsD Offline
                          docadamsD Offline
                          docadams
                          wrote on last edited by docadams
                          #12

                          Das "Stopp Timeout" ist noch ein wichtiger Hinweis, danke.

                          Eigentlich prinzipiell gibt es doch keinen Unterschied zwischen dem Blockly und den JS-Code von Asgothian, oder?
                          Oder ist der Code flexibler?

                          Ich frage das deshalb, weil ich noch eine Lösung von folgendem Problem suche:

                          • mache etwas
                          • warte 5 ... 15 Minuten (zufällig jeden Tag anders)
                          • mache das Nächste

                          Geht das überhaupt und könnte man das auch in Blockly erzeugen, oder nur als JS?

                          AsgothianA 1 Reply Last reply
                          0
                          • docadamsD docadams

                            Das "Stopp Timeout" ist noch ein wichtiger Hinweis, danke.

                            Eigentlich prinzipiell gibt es doch keinen Unterschied zwischen dem Blockly und den JS-Code von Asgothian, oder?
                            Oder ist der Code flexibler?

                            Ich frage das deshalb, weil ich noch eine Lösung von folgendem Problem suche:

                            • mache etwas
                            • warte 5 ... 15 Minuten (zufällig jeden Tag anders)
                            • mache das Nächste

                            Geht das überhaupt und könnte man das auch in Blockly erzeugen, oder nur als JS?

                            AsgothianA Offline
                            AsgothianA Offline
                            Asgothian
                            Developer
                            wrote on last edited by
                            #13

                            @docadams sagte in Suche anders geartete Zeitverzögerung:

                            Geht das überhaupt und könnte man das auch in Blockly erzeugen, oder nur als JS?

                            Prinzipiell geht fast alles auch mit blockly. Wenn du das gleiche prinzipiell immer wieder mit unterschiedlichen Datenpunkte n machen willst ist js flexibler, kürzer, aber auch komplexer zu lesen.

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

                            1 Reply Last reply
                            0
                            • docadamsD Offline
                              docadamsD Offline
                              docadams
                              wrote on last edited by
                              #14

                              Hallo,
                              endlich kann ich auch mal was Positives einbringen und nicht nur Fragen stellen :-)
                              Auf die Lösung hat mich "Svens ioBroker Tutorials" gebracht, hier etwa ab Minute 16.

                              Ich möchte ja etwas zufällig schalten wollen. Hier im Beispiel eine Lampe für die Dauer von 11 bis 33 Sekunden lang leuchten lassen.
                              Die Idee ist, eine Variable erzeugen, die einmal täglich mit dem Inhalt der zufälligen Leuchtdauer in Millisekunden befüllt wird.
                              Und im Timeout-Modul wird an Stelle der Dauer in Ziffern der Name der Variablen eingetragen.
                              Zufall.PNG
                              Das wars.

                              rantanplanR 1 Reply Last reply
                              0
                              • docadamsD docadams

                                Hallo,
                                endlich kann ich auch mal was Positives einbringen und nicht nur Fragen stellen :-)
                                Auf die Lösung hat mich "Svens ioBroker Tutorials" gebracht, hier etwa ab Minute 16.

                                Ich möchte ja etwas zufällig schalten wollen. Hier im Beispiel eine Lampe für die Dauer von 11 bis 33 Sekunden lang leuchten lassen.
                                Die Idee ist, eine Variable erzeugen, die einmal täglich mit dem Inhalt der zufälligen Leuchtdauer in Millisekunden befüllt wird.
                                Und im Timeout-Modul wird an Stelle der Dauer in Ziffern der Name der Variablen eingetragen.
                                Zufall.PNG
                                Das wars.

                                rantanplanR Online
                                rantanplanR Online
                                rantanplan
                                wrote on last edited by
                                #15

                                @docadams Hallo

                                Funktioniert nur mit "ms" und wird offiziell nicht unterstützt. Kann also irgendwann nicht mehr funktionieren.
                                So mein letzter Stand.

                                Rantanplan

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

                                1 Reply Last reply
                                0
                                • docadamsD Offline
                                  docadamsD Offline
                                  docadams
                                  wrote on last edited by
                                  #16

                                  Naja, deshalb ja auch der Faktor 1000 oder wenn es um Minuten geht, halt Faktor 60000.
                                  Wäre echt schade, wenn das mal wegver(schlimm)bessert werden sollte. Zumindest für mich "NichtJavaKenner" ist das eine elegante Lösung, die sogar ich verstehe ;-).
                                  Mal sehen....

                                  1 Reply Last reply
                                  0

                                  Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                  Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                  With your input, this post could be even better 💗

                                  Register Login
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes


                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  586

                                  Online

                                  32.8k

                                  Users

                                  82.8k

                                  Topics

                                  1.3m

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

                                  • Don't have an account? Register

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