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. Delay zwischen 2 Befehlen

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    473

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

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

Delay zwischen 2 Befehlen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
15 Beiträge 5 Kommentatoren 11.2k Aufrufe
  • Ä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.
  • eric2905E Offline
    eric2905E Offline
    eric2905
    schrieb am zuletzt editiert von
    #2

    Schau mal, ob Du hier fündig wirst (nach "javascript wait" gegoogelt):

    http://www.w3schools.com/js/js_timing.asp

    Gruß,

    Eric

    Roses are red, violets are blue,

    if I listen to metal, my neighbours do too

    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #3
      setTimeout(function() {setState('sayit.0.tts.text', "abcdefg" );}, 2000);
      

      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
      • bahnuhrB Online
        bahnuhrB Online
        bahnuhr
        Forum Testing Most Active
        schrieb am zuletzt editiert von
        #4

        setTimeout

        probiere ich aus.

        Danke für die Antwort.


        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 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          pix
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • bahnuhrB Online
            bahnuhrB Online
            bahnuhr
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • bahnuhrB Online
                bahnuhrB Online
                bahnuhr
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                • P Offline
                  P Offline
                  pix
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  0
                  • bahnuhrB Online
                    bahnuhrB Online
                    bahnuhr
                    Forum Testing Most Active
                    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                    0
                    • P Offline
                      P Offline
                      pix
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      0
                      • P Offline
                        P Offline
                        pix
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • bahnuhrB Online
                          bahnuhrB Online
                          bahnuhr
                          Forum Testing Most Active
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • blauholstenB Offline
                            blauholstenB Offline
                            blauholsten
                            Developer
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            0
                            • bahnuhrB Online
                              bahnuhrB Online
                              bahnuhr
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              0
                              Antworten
                              • In einem neuen Thema antworten
                              Anmelden zum Antworten
                              • Älteste zuerst
                              • Neuste zuerst
                              • Meiste Stimmen


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              739

                              Online

                              32.5k

                              Benutzer

                              81.8k

                              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