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.
    • 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

                                686
                                Online

                                31.9k
                                Users

                                80.1k
                                Topics

                                1.3m
                                Posts

                                4
                                16
                                3881
                                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