Skip to content
  • 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
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Delay zwischen 2 Befehlen

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

Delay zwischen 2 Befehlen

Scheduled Pinned Locked Moved Skripten / Logik
15 Posts 5 Posters 11.1k Views
  • 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.
  • P Offline
    P Offline
    pix
    wrote on last edited by
    #5

    @bahnuhr:

    Habe schon versucht mit "setStateDelayed"; aber irgendwie passt das nicht. `
    Was passt denn nicht? Geht das nicht?

    setStateDelayed('sayit.0.tts.text', "abcdefg", 2000 );
    

    Gruß

    Pix

    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

    1 Reply Last reply
    0
    • bahnuhrB Offline
      bahnuhrB Offline
      bahnuhr
      Forum Testing Most Active
      wrote on last edited by
      #6

      @pix:

      @bahnuhr:

      Habe schon versucht mit "setStateDelayed"; aber irgendwie passt das nicht. `
      Was passt denn nicht? Geht das nicht?

      setStateDelayed('sayit.0.tts.text', "abcdefg", 2000 );
      

      Gruß

      Pix `

      Doch, doch das geht schon.

      Aber danach kommen ja noch weitere Befehle.

      Und ich habe den Eindruck, dass das Script halt weiter läuft und die nächsten Befehle abgearbeitet werden (was ich aber nicht will).

      Ich möchte, dass das Script stoppt für 2 Sek. und erst dann der nächste Befehl folgt.

      mfg

      Dieter


      Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
      Danke.
      gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
      ScreenToGif :https://www.screentogif.com/downloads.html

      1 Reply Last reply
      0
      • paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #7

        @bahnuhr:

        Und ich habe den Eindruck, dass das Script halt weiter läuft und die nächsten Befehle abgearbeitet werden (was ich aber nicht will). `
        Dann muss setTimeout() so angewendet werden:

        setTimeout(function() {
           setState('sayit.0.tts.text', "abcdefg" );
           // weitere Befehle
        }, 2000);
        

        @bahnuhr:

        Ich möchte, dass das Script stoppt für 2 Sek. und erst dann der nächste Befehl folgt. `
        Das Script lässt sich nicht stoppen, sondern an das Timer-Objekt wird die Callback-Funktion übergeben, deren Befehle nach der Verzögerung abgearbeitet werden sollen.

        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 Reply Last reply
        0
        • bahnuhrB Offline
          bahnuhrB Offline
          bahnuhr
          Forum Testing Most Active
          wrote on last edited by
          #8

          Danke.

          Funktioniert.

          mfg

          Dieter


          Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
          Danke.
          gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
          ScreenToGif :https://www.screentogif.com/downloads.html

          1 Reply Last reply
          0
          • P Offline
            P Offline
            pix
            wrote on last edited by
            #9

            Nur für die Vollständigkeit: das kann setStateDelayed auch.

            Doku hier: https://github.com/ioBroker/ioBroker.ja … atedelayed

            setStateDelayed('sayit.0.tts.text', "abcdefg", 2000, function () {
                /* weitere Befehle (werden erst gestartet, wenn Zeile drüber abgearbeitet.
                    Befehle können natürlich auch in eine separate Funktion 
                    gepackt und von hier aufgerufen werden.
                 */
            });
            

            Gruß

            Pix

            ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

            1 Reply Last reply
            0
            • bahnuhrB Offline
              bahnuhrB Offline
              bahnuhr
              Forum Testing Most Active
              wrote on last edited by Jey Cee
              #10

              @paul53

              Ich bekomme das mit dem Timeout nicht hin.

              Nachfolgend mal ein Beispiel-Script.

              Hier will ich mir per Telegram Bilder zusenden. Klappt auch soweit (kommen an).

              Ich muss aber irgendwie abwarten, damit die Bilder gespeichert werden und dann nach x Sek. versendet werden.

              Nachfolgender Timeout klappt nicht. Bilder kommen sofort.

              Vielleicht hast du die Zeit mal drüber zu schauen.

              for (x=66; x<=67; x++) {
              log (x);
              Telegram_Bild(x);
              }
              function Telegram_Bild (ip) {
              //Bild senden mit Telegram
              var request = require('request');
              var fs = require('fs');
              log ('ip Schleife= ' + ip);
              setTimeout(function () {
              request.get({url: '[http://192.168.243](http://192.168.243).' + ip + ':88//cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=abcd&pwd=abcd', encoding: 'binary'}, function (err, response, body) {
              fs.writeFile("c:/tmp/snap.jpg", body, 'binary', function(err) {
              if (err) {
              console.error(err);
              } else {
              console.log('Snapshot sent');
              //sendTo('telegram.0', 'c:/tmp/snap.jpg');
              sendTo('telegram.0', {text: 'c:/tmp/snap.jpg', caption: 'Garage ' + ip + 'wird geöffnet.'});
              }
              });
              });
              }, ip-65*5000);
              }
              

              Danke im Voraus.

              mfg

              Dieter


              Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
              Danke.
              gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
              ScreenToGif :https://www.screentogif.com/downloads.html

              1 Reply Last reply
              0
              • P Offline
                P Offline
                pix
                wrote on last edited by
                #11

                Du hast PN

                ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                1 Reply Last reply
                0
                • P Offline
                  P Offline
                  pix
                  wrote on last edited by
                  #12

                  Hallo Dieter,

                  wenn ich das richtig sehe, dann umfasst die Timout Funktion sowohl das Speichern, wie das Versenden des Bildes. Du willst aber eigentlich zwischen beiden Aktionen eine Pause. Also sollte die Timeout Funktion in den else-Teil der Fehlerabfrage.

                  Und darf ich fragen, was die Berechnung des Delays bringt?

                  ip - 65 * 5000
                  ````ip kann ja nur 66 oder 67 sein (ich vermute zwei Kameras). Soll also die Verzögerung bei beiden Kameras unterschiedlich sein? Wozu?
                  
                  Falls die Kameras sich gegenseitig stören beim Schreiben der Datei snap.jpg, kannst auch deren Namen mit der Variable ip bilden (snap66.jpg und snap67.jpg)````
                  for (x = 66; x <= 67; x++) {
                      log(x);
                      Telegram_Bild(x);
                  }
                  
                  function Telegram_Bild(ip) {
                  
                      //Bild senden mit Telegram
                      var request = require('request');
                      var fs = require('fs');
                      log('ip Schleife= ' + ip);
                  
                      request.get({
                          url: 'http://192.168.243.' + ip + ':88//cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=abcd&pwd=abcd',
                          encoding: 'binary'
                      }, function(err, response, body) {
                          fs.writeFile("c:/tmp/snap" + ip + ".jpg", body, 'binary', function(err) {
                              if (err) {
                                  console.error(err);
                              } else {
                                  setTimeout(function() { // wenn kein Fehler, dann Zeitverzögert Bild senden
                                      console.log('Snapshot sent');
                                      //sendTo('telegram.0', 'c:/tmp/snap66.jpg');
                                      sendTo('telegram.0', {
                                          text: 'c:/tmp/snap' + ip + '.jpg',
                                          caption: 'Garage ' + ip + 'wird geöffnet.'
                                      });
                                  }, 5000);
                              }
                          });
                      });
                  }
                  

                  Gruß

                  Pix

                  ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                  1 Reply Last reply
                  0
                  • bahnuhrB Offline
                    bahnuhrB Offline
                    bahnuhr
                    Forum Testing Most Active
                    wrote on last edited by
                    #13

                    Das Probier ich aus.

                    Danke dir.

                    Mfg


                    Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                    Danke.
                    gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                    ScreenToGif :https://www.screentogif.com/downloads.html

                    1 Reply Last reply
                    0
                    • blauholstenB Offline
                      blauholstenB Offline
                      blauholsten
                      Developer
                      wrote on last edited by
                      #14

                      @pix:

                      Hallo Dieter,

                      for (x = 66; x <= 67; x++) {
                          log(x);
                          Telegram_Bild(x);
                      }
                      
                      function Telegram_Bild(ip) {
                      
                          //Bild senden mit Telegram
                          var request = require('request');
                          var fs = require('fs');
                          log('ip Schleife= ' + ip);
                      
                          request.get({
                              url: 'http://192.168.243.' + ip + ':88//cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=abcd&pwd=abcd',
                              encoding: 'binary'
                          }, function(err, response, body) {
                              fs.writeFile("c:/tmp/snap" + ip + ".jpg", body, 'binary', function(err) {
                                  if (err) {
                                      console.error(err);
                                  } else {
                                      setTimeout(function() { // wenn kein Fehler, dann Zeitverzögert Bild senden
                                          console.log('Snapshot sent');
                                          //sendTo('telegram.0', 'c:/tmp/snap66.jpg');
                                          sendTo('telegram.0', {
                                              text: 'c:/tmp/snap' + ip + '.jpg',
                                              caption: 'Garage ' + ip + 'wird geöffnet.'
                                          });
                                      }, 5000);
                                  }
                              });
                          });
                      }
                      

                      Gruß

                      Pix `
                      Hi Pix,

                      kurze Frage,

                      ist es eigentlich nicht so, das man sich das setTimeout schenken kann wenn man den Callback der fs.writeFile benutzt? Die sollte doch theoretisch erst aufgerufen werden wenn das schreiben beendet ist, bzw ein Fehler entstanden ist. Oder liegt mein leihenhaftes Halbwissen völlig daneben? :oops:

                      Entwickler vom: - Viessman Adapter
                      - Alarm Adapter

                      1 Reply Last reply
                      0
                      • bahnuhrB Offline
                        bahnuhrB Offline
                        bahnuhr
                        Forum Testing Most Active
                        wrote on last edited by
                        #15

                        Ausgangslage, was wollte ich:

                        • das Script soll mir Bilder meiner Cams senden per Telegram.

                        • das Bild soll erst versendet werden wenn es ordnungsgemäß gespeichert ist. (Deshalb zeitverzögert; wenn dies nicht notwendig dann auch gut)

                        • das gespeicherte Bild soll nach Versand wieder gelöscht werden (hab ich bisher noch nicht hinbekommen)

                        • ich wollte die Nachrichten per Telegram in der richtigen Reihenfolge.

                        Also erst cam 62, dann 63, …. (Deshalb for .. To; dies klappt bisher nicht -> die Nachrichten kommen willkürlich, erst Bild 67, dann 62, dann 64, etc.)

                        So, ich glaub das wars.

                        Fazit:

                        Wie bekomme ich das hin, mit

                        • Datei wieder löschen

                        • Reihenfolge der Nachrichten

                        Mit freundlichen Grüßen

                        Dieter


                        Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                        Danke.
                        gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                        ScreenToGif :https://www.screentogif.com/downloads.html

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        232

                        Online

                        32.4k

                        Users

                        81.4k

                        Topics

                        1.3m

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

                        • Don't have an account? Register

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