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. Русский
  3. ioBroker
  4. Скрипты
  5. ioBroker скрипты
  6. Аналог функции delay()

NEWS

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

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

Аналог функции delay()

Geplant Angeheftet Gesperrt Verschoben ioBroker скрипты
7 Beiträge 4 Kommentatoren 2.3k 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.
  • I Offline
    I Offline
    instalator
    schrieb am zuletzt editiert von
    #1

    имеется код, как сделать паузы между отправкой команд чтобы они успевали отработать.

    on('javascript.0.TV', function (obj) {
    if (obj.newState.val){
            setState('javascript.0.TV', 'false');
            setState('mqtt.0.myhome.RS232.LGTV_PWR', '1');
            setState('mqtt.0.myhome.RS232.LGTV_Source', 'tv');
            setState('onkyo.0.power', 'true');
            setState('onkyo.0.volume', '45');
            setState('onkyo.0.input', 'cd');
        }
    
    //        setState('counter', 1 + getState('counter'), true/*ack*/);
    //        setState('adapter.0.device.channel.actor', true);
    });
    

    Может как то можно после setState получить ack?

    Высокий уровень Децибел вреден для здоровья!

    http://blog.instalator.ru/

    1 Antwort Letzte Antwort
    0
    • I Offline
      I Offline
      instalator
      schrieb am zuletzt editiert von
      #2

      @instalator:

      имеется код, как сделать паузы между отправкой команд чтобы они успевали отработать.

      on('javascript.0.TV', function (obj) {
      if (obj.newState.val){
              setState('javascript.0.TV', 'false');
              setState('mqtt.0.myhome.RS232.LGTV_PWR', '1');
              setState('mqtt.0.myhome.RS232.LGTV_Source', 'tv');
              setState('onkyo.0.power', 'true');
              setState('onkyo.0.volume', '45');
              setState('onkyo.0.input', 'cd');
          }
      
      //        setState('counter', 1 + getState('counter'), true/*ack*/);
      //        setState('adapter.0.device.channel.actor', true);
      });
      

      Может как то можно после setState получить ack? `

      Или только такой вариант и никак иначе?

              setTimeout(function() { setState('onkyo.0.power', 'true'); }, 500);
              setTimeout(function() { setState('onkyo.0.volume', '45'); }, 2000);
              setTimeout(function() { setState('onkyo.0.input', 'cd'); }, 3000);
      

      Высокий уровень Децибел вреден для здоровья!

      http://blog.instalator.ru/

      1 Antwort Letzte Antwort
      0
      • BluefoxB Offline
        BluefoxB Offline
        Bluefox
        schrieb am zuletzt editiert von
        #3

        Только такой.

        1 Antwort Letzte Antwort
        0
        • S Offline
          S Offline
          spectrekr
          schrieb am zuletzt editiert von
          #4

          Есть некая большая процедура

          ! child = exec ('cat /sys/bus/w1/devices/28-0000067caf58/w1_slave', function (error, stdout, stderr){ tmp = stdout.substring(stdout.indexOf('t=')+2)/1000; if (tmp > 0){ setState('hallway.temp_flooring', tmp); }else{ setState('hallway.temp_flooring', 'null'); } log(getState('hallway.temp_flooring').val); if (error !== null) { log(error); } }); !
          Как ее правильно завернуть в таймаут, чтоб она выполнялась с задержкой. Таких процедур несколько, делаю

          ! setTimeout(function() { child = exec ('cat /sys/bus/w1/devices/28-0000067caf58/w1_slave', function (error, stdout, stderr){ tmp = stdout.substring(stdout.indexOf('t=')+2)/1000; if (tmp > 0){ setState('hallway.temp_flooring', tmp); }else{ setState('hallway.temp_flooring', 'null'); } log(getState('hallway.temp_flooring').val); if (error !== null) { log(error); } });10000}); !
          и у каждой последующей, делаю интервал больше. Но почему-то все выполняются одновременно.

          1 Antwort Letzte Antwort
          0
          • V Offline
            V Offline
            vtec
            schrieb am zuletzt editiert von
            #5

            Через функцию или крон.

            1 Antwort Letzte Antwort
            0
            • S Offline
              S Offline
              spectrekr
              schrieb am zuletzt editiert von
              #6

              ну вот я через функцию сделал, второй спойлер, но видно неправильно, не задерживает. А через крон не получится, там минимум минута, а мне надо с задержки в 2-3 секунды, чтоб датчики друг другу не мешали.

              1 Antwort Letzte Antwort
              0
              • BluefoxB Offline
                BluefoxB Offline
                Bluefox
                schrieb am zuletzt editiert von
                #7

                @spectrekr:

                Есть некая большая процедура

                ! child = exec ('cat /sys/bus/w1/devices/28-0000067caf58/w1_slave', function (error, stdout, stderr){ tmp = stdout.substring(stdout.indexOf('t=')+2)/1000; if (tmp > 0){ setState('hallway.temp_flooring', tmp); }else{ setState('hallway.temp_flooring', 'null'); } log(getState('hallway.temp_flooring').val); if (error !== null) { log(error); } }); !
                Как ее правильно завернуть в таймаут, чтоб она выполнялась с задержкой. Таких процедур несколько, делаю

                ! setTimeout(function() { child = exec ('cat /sys/bus/w1/devices/28-0000067caf58/w1_slave', function (error, stdout, stderr){ tmp = stdout.substring(stdout.indexOf('t=')+2)/1000; if (tmp > 0){ setState('hallway.temp_flooring', tmp); }else{ setState('hallway.temp_flooring', 'null'); } log(getState('hallway.temp_flooring').val); if (error !== null) { log(error); } });10000}); !
                и у каждой последующей, делаю интервал больше. Но почему-то все выполняются одновременно. `
                Ты неправильно прописал время:

                setTimeout(function() {
                child = exec ('cat /sys/bus/w1/devices/28-0000067caf58/w1_slave',
                    function (error, stdout, stderr){
                        tmp = stdout.substring(stdout.indexOf('t=')+2)/1000;
                        if (tmp > 0){
                            setState('hallway.temp_flooring', tmp);
                        }else{
                            setState('hallway.temp_flooring', 'null');
                        }
                        log(getState('hallway.temp_flooring').val);
                        if (error !== null) {
                            log(error);
                        }
                    });
                },10000);
                
                

                Видишь разницу?

                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

                521

                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