Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Русский
    3. ioBroker
    4. Скрипты
    5. ioBroker скрипты
    6. Почему скрипты "засыпают"?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Почему скрипты "засыпают"?

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Ho Hum last edited by

      Уменя наблюдается странная ситуация - скрипты реакции на клавиши включения света "засыпают".

      Управление светом реализовано через Мегу. Если долго не был в доме, при нажатиина кнопку видно, что на Меге лампочка мигнула, но свет включается с большой задержкой, от 30 сек до минуты. После этого уже включение/выключение работает нормально, но только для этой клавиши. Первое нажатие на другую клавишу опять отрабатывает с задержкой.

      Другие скрипты, работающие по расписанию, работают нормально.

      В чем может быть проблема? Как предотвратить засыпание скриптов?

      Пример скрипта:

      var Button = "megad.7.p0_S-3";
      var Light  = "megad.7.p7_L-3";
      
      on(Button, function (obj) {
          if (obj.newState.val === true && getState(Light).val === false) {
              setState (Light, true);
              log('Включено');
          }else if(obj.newState.val === true && getState(Light).val === true){
              setState (Light, false);
              log('Выключено');
          }
      });
      
      
      1 Reply Last reply Reply Quote 0
      • I
        instalator last edited by

        @Ho Hum:

        Уменя наблюдается странная ситуация - скрипты реакции на клавиши включения света "засыпают".

        Управление светом реализовано через Мегу. Если долго не был в доме, при нажатиина кнопку видно, что на Меге лампочка мигнула, но свет включается с большой задержкой, от 30 сек до минуты. После этого уже включение/выключение работает нормально, но только для этой клавиши. Первое нажатие на другую клавишу опять отрабатывает с задержкой.

        Другие скрипты, работающие по расписанию, работают нормально.

        В чем может быть проблема? Как предотвратить засыпание скриптов?

        Пример скрипта:

        var Button = "megad.7.p0_S-3";
        var Light  = "megad.7.p7_L-3";
        
        on(Button, function (obj) {
            if (obj.newState.val === true && getState(Light).val === false) {
                setState (Light, true);
                log('Включено');
            }else if(obj.newState.val === true && getState(Light).val === true){
                setState (Light, false);
                log('Выключено');
            }
        });
        
        ```` `  
        

        Наврятли это проблема скрипта.

        1 Reply Last reply Reply Quote 0
        • Bluefox
          Bluefox last edited by

          @Ho Hum:

          Уменя наблюдается странная ситуация - скрипты реакции на клавиши включения света "засыпают".

          Управление светом реализовано через Мегу. Если долго не был в доме, при нажатиина кнопку видно, что на Меге лампочка мигнула, но свет включается с большой задержкой, от 30 сек до минуты. После этого уже включение/выключение работает нормально, но только для этой клавиши. Первое нажатие на другую клавишу опять отрабатывает с задержкой.

          Другие скрипты, работающие по расписанию, работают нормально.

          В чем может быть проблема? Как предотвратить засыпание скриптов?

          Пример скрипта:

          var Button = "megad.7.p0_S-3";
          var Light  = "megad.7.p7_L-3";
          
          on(Button, function (obj) {
              if (obj.newState.val === true && getState(Light).val === false) {
                  setState (Light, true);
                  log('Включено');
              }else if(obj.newState.val === true && getState(Light).val === true){
                  setState (Light, false);
                  log('Выключено');
              }
          });
          
          ```` `  
          

          А что видно в логе при нажатии?

          1 Reply Last reply Reply Quote 0
          • H
            Ho Hum last edited by

            Я тоже думаю, что это не проблема скрипта.

            В логе после задержки появляется сообщение из скрипта и стандартная запись о том, что была попытка изменить состояние объекта.

            Как я понимаю, каждый скрипт - это отдельный процесс. И, как мне кажется, долго неактивные процессы засыпают.

            Это делает либо ioBroker, либо операционка…

            1 Reply Last reply Reply Quote 0
            • K
              kozlov_ao last edited by

              У меня аналогичная ситуация. В качестве железа - MegaD, скрипт - JS.

              Что нужно, что бы отследить проблему?

              1 Reply Last reply Reply Quote 0
              • I
                instalator last edited by

                @Ho Hum:

                Я тоже думаю, что это не проблема скрипта.

                В логе после задержки появляется сообщение из скрипта и стандартная запись о том, что была попытка изменить состояние объекта.

                Как я понимаю, каждый скрипт - это отдельный процесс. И, как мне кажется, долго неактивные процессы засыпают.

                Это делает либо ioBroker, либо операционка… `
                Ни у кого не засыпают….

                Ну хотелось бы видеть собственно сам скрипт.

                1 Reply Last reply Reply Quote 0
                • K
                  kozlov_ao last edited by

                  "Засыпает" собственно вот этот огрызок:

                  // Реакция на нажатия выключателей
                  $('megad.*_кнопка').on(function (e) {
                      if (e.newState.val === true){
                          var port = getIdByName(e.common.name.split('_')[0]);
                  
                          setState(port, !getState(port).val);
                      }
                  });
                  

                  При этом действия, выполняемые по крону - работают нормально (в этом же скрипте)

                  1 Reply Last reply Reply Quote 0
                  • I
                    instalator last edited by

                    @kozlov_ao:

                    "Засыпает" собственно вот этот огрызок:

                    // Реакция на нажатия выключателей
                    $('megad.*_кнопка').on(function (e) {
                        if (e.newState.val === true){
                            var port = getIdByName(e.common.name.split('_')[0]);
                            
                            setState(port, !getState(port).val);
                        }
                    });
                    

                    При этом действия, выполняемые по крону - работают нормально (в этом же скрипте) `
                    Давай тестить, в лог пишет при изменениях?

                    ! ````
                    on({id: 'megad._кнопка', change: 'any'}, function (obj) {
                    log('megad.
                    кнопка.val = ' + obj.newState.val);
                    if (obj.newState.val === true || obj.newState.val === 'true'){
                    var port = getIdByName(obj.common.name.split('
                    ')[0]);
                    log('var port = ' + port);
                    setState(port, !getState(port).val);
                    }
                    });

                    1 Reply Last reply Reply Quote 0
                    • K
                      kozlov_ao last edited by

                      Есть ли принципиальная разница для эксперимента между

                      $('megad.*_кнопка').on(function (e) {});
                      

                      и

                      on({id: 'megad.*_кнопка', change: 'any'}, function (obj) {});
                      

                      Спрашиваю, потому что со вторым вариантом - подписка на события не произошла…

                      Несколько изменил свой кусок.. посмотрю что будет происодить.

                      1 Reply Last reply Reply Quote 0
                      • I
                        instalator last edited by

                        @kozlov_ao:

                        Есть ли принципиальная разница для эксперимента между

                        $('megad.*_кнопка').on(function (e) {});
                        

                        и

                        on({id: 'megad.*_кнопка', change: 'any'}, function (obj) {});
                        

                        Спрашиваю, потому что со вторым вариантом - подписка на события не произошла…

                        Несколько изменил свой кусок.. посмотрю что будет происодить. `
                        А это где? $('megad.*_кнопка'. Это в jquery чтоли? В визе?

                        1 Reply Last reply Reply Quote 0
                        • Bluefox
                          Bluefox last edited by

                          @kozlov_ao:

                          Есть ли принципиальная разница для эксперимента между

                          $('megad.*_кнопка').on(function (e) {});
                          

                          и

                          on({id: 'megad.*_кнопка', change: 'any'}, function (obj) {});
                          

                          Спрашиваю, потому что со вторым вариантом - подписка на события не произошла…

                          Несколько изменил свой кусок.. посмотрю что будет происодить. `

                          $('megad.*_кнопка')
                          ````изначально заточен на то, что бы поддерживать несколько устройств.
                          
                          

                          on({id: 'megad.*_кнопка', change: 'any'}, function (obj) {});

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

                          on({id: /^megad..*_кнопка$/, change: 'any'}, function (obj) {});

                          Будет уже обрабатывать несколько устройств.
                          1 Reply Last reply Reply Quote 0
                          • I
                            instalator last edited by

                            @Bluefox:

                            @kozlov_ao:

                            Есть ли принципиальная разница для эксперимента между

                            $('megad.*_кнопка').on(function (e) {});
                            

                            и

                            on({id: 'megad.*_кнопка', change: 'any'}, function (obj) {});
                            

                            Спрашиваю, потому что со вторым вариантом - подписка на события не произошла…

                            Несколько изменил свой кусок.. посмотрю что будет происодить. `

                            $('megad.*_кнопка')
                            ````изначально заточен на то, что бы поддерживать несколько устройств.
                            
                            

                            on({id: 'megad.*_кнопка', change: 'any'}, function (obj) {});

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

                            on({id: /^megad..*_кнопка$/, change: 'any'}, function (obj) {});

                            Будет уже обрабатывать несколько устройств. `  это а виз только работает?
                            1 Reply Last reply Reply Quote 0
                            • Bluefox
                              Bluefox last edited by

                              @instalator:

                              это а виз только работает? `
                              Речь идёт о javascript драйвере.

                              https://github.com/ioBroker/ioBroker.ja ... --selector

                              1 Reply Last reply Reply Quote 0
                              • I
                                instalator last edited by

                                @Bluefox:

                                @instalator:

                                это а виз только работает? `
                                Речь идёт о javascript драйвере.

                                https://github.com/ioBroker/ioBroker.ja ... --selector `
                                Чо то я сразу не догнал когда с телефона читал, лучше молчать буду)

                                1 Reply Last reply Reply Quote 0
                                • K
                                  kozlov_ao last edited by

                                  > лучше молчать буду)
                                  ненене ))

                                  В общем снова проглючило.

                                  Было 2 нажатия.. зарегистрировалось только одно и то с задержкой:

                                  javascript.0	2016-12-15 12:05:15.771	info	script.js.common.LightControl: megad.1.p0_Свет:_Кладовка_кнопка=false
                                  megad.1	2016-12-15 12:05:15.684	info	try to control megad.1.p7_Свет:_Кладовка with true
                                  javascript.0	2016-12-15 12:05:15.680	info	script.js.common.LightControl: var port = megad.1.p7_Свет:_Кладовка
                                  javascript.0	2016-12-15 12:05:15.674	info	script.js.common.LightControl: megad.1.p0_Свет:_Кладовка_кнопка=true
                                  

                                  Хоть дамп трафика снимай 😞

                                  Вот думаю, не глючит ли мега…. хотя они все из одной партии. 3 нормально работают, а эта вот...

                                  Интересно, у ТС решилась ли проблема?

                                  1 Reply Last reply Reply Quote 0
                                  • H
                                    Ho Hum last edited by

                                    К сожалению, у меня проблема так и не решилась.

                                    Я настраиваю систему в загородном доме, находящемся в процессе практически замороженной отделки, поэтому приезжаю туда не каждую неделю и не надолго…

                                    При каждом приезде лампы сразу не зажигаются. После нескольких нажатий зажигаются и дальше работают до отъезда нормально. Потом все снова повторяется.

                                    При этом по таймеру другие функции работают нормально.

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    790
                                    Online

                                    31.8k
                                    Users

                                    80.0k
                                    Topics

                                    1.3m
                                    Posts

                                    4
                                    16
                                    3856
                                    Loading More Posts
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                    The ioBroker Community 2014-2023
                                    logo