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. Однократное выполение js скрипта

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    990

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Однократное выполение js скрипта

Geplant Angeheftet Gesperrt Verschoben ioBroker скрипты
20 Beiträge 3 Kommentatoren 4.4k 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.
  • BluefoxB Offline
    BluefoxB Offline
    Bluefox
    schrieb am zuletzt editiert von
    #8

    В яваскрипте нет циклов ожидания. Тебе надо ждать при помощи "on".

    @all: Кто нибудь разбирается ещё в JS. Можете объяснить?

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

      @Bluefox:

      В яваскрипте нет циклов ожидания. Тебе надо ждать при помощи "on".

      @all: Кто нибудь разбирается ещё в JS. Можете объяснить? `
      пробовал on. функция спарсила данные допустим час назад потом по on. данные уже в дургую функцию не отдаются.
      2983_img_7685.jpg

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

      http://blog.instalator.ru/

      1 Antwort Letzte Antwort
      0
      • BluefoxB Offline
        BluefoxB Offline
        Bluefox
        schrieb am zuletzt editiert von
        #10
        var request = require('request');
        var parseResult;
        var parseTime;
        
        request('http://www.google.com', function (error, response, body) {
          // внутри функции, которая спарсила с сайта данные
          if (!error && response.statusCode == 200) {
            parseResult = myParseFunction();
            parseTime = (new Date()).getTime();
          }
        });
        
        // "цикл" ожидающий изменения переменной из брокера
        on('waitForVariable', function (obj) {
            // Если прошло меньше секунды
            if (parseTime && (new Date()).getTime() - parseTime < 1000) {
                 // выполнилась другая функция в которой спарсенные данные уже обработались
                 drugajaFunction(parseResult);
            }
        });
        

        Либо я не понял, что ты хочешь. ;)

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

          @Bluefox:

          var request = require('request');
          var parseResult;
          var parseTime;
          
          request('http://www.google.com', function (error, response, body) {
            // внутри функции, которая спарсила с сайта данные
            if (!error && response.statusCode == 200) {
              parseResult = myParseFunction();
              parseTime = (new Date()).getTime();
            }
          });
          
          // "цикл" ожидающий изменения переменной из брокера
          on('waitForVariable', function (obj) {
              // Если прошло меньше секунды
              if (parseTime && (new Date()).getTime() - parseTime < 1000) {
                   // выполнилась другая функция в которой спарсенные данные уже обработались
                   drugajaFunction(parseResult);
              }
          });
          

          Либо я не понял, что ты хочешь. ;) `

          Решил сделать так.

          Каждый месяц парсим данные и пишем в базу, отправляем на телефон данные которые спарсили (+ссылка ОТПРАВИТЬ), жмем в сообщении отправить и данные уже из базы отправляются в систему город.

          Примерчиков нужно больше по js. А так необычно на js что либо писать после С.

          Все таки нужно прикрутить чтонибудь еще для написания скриптов. Чтобы например легче было написать что то типо Если сработал датчик уходим в цикл, если сработал второй выполняем что либо, если за определенный промежуток времени не сработал второй выходим из цикла. и т.п. и т.д.

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

          http://blog.instalator.ru/

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

            Почему не срабатывает следующий код?

            on({time: "* *13 */23 * *"}, function () {

            log('не работает');

            });

            Должно срабатывать в 13 00 каждое 23 число месяца

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

            http://blog.instalator.ru/

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

              @instalator:

              Почему не срабатывает следующий код?

              on({time: "* *13 */23 * *"}, function () {

              log('не работает');

              });

              Должно срабатывать в 13 00 каждое 23 число месяца `
              Я сам постоянно забываю cron формат. Пользуюсь

              http://cron.nmonitoring.com/cron-generator.html

              или

              http://www.corntab.com/pages/crontab-gui

              "0 13 23 * *"

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

                Как вообще описать тупую логику на js?

                Можно ли отписаться от изменений переменных?

                on('javascript.0.Signalizaciya', function (obj) {
                    if (obj.newState.val === 1 || obj.newState.val === "1"){
                        on('mqtt.0.myhome.Bedroom.Motion', function (obj) {
                             if (obj.newState.val === 1 || obj.newState.val === "1"){
                                 sendTo("pushover", {
                                    message:  'ВНИМАНИЕ!!! Замечено движение в спальне',
                                    title:    'Сигнализация',
                                    url: '',
                                    url_title: '', 
                                });
                             }
                        });
                        on('mqtt.0.myhome.Guestroom.Motion', function (obj) {
                             if (obj.newState.val === 1 || obj.newState.val === "1"){
                                 sendTo("pushover", {
                                    message:  'ВНИМАНИЕ!!! Замечено движение в зале',
                                    title:    'Сигнализация',
                                    url: '',
                                    url_title: '', 
                                });
                             }
                        });  
                    }
                });
                

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

                http://blog.instalator.ru/

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

                  @instalator:

                  Как вообще описать тупую логику на js?

                  Можно ли отписаться от изменений переменных? `
                  Нет, нельзя. Но можно проигнорировать изменения.

                  var signalizaciyaON = false;
                  
                  createState('Signalizaciya', false, function () {
                  	signalizaciyaON = getState('Signalizaciya').val;
                  });
                  // Подписываемся на изменения
                  on('Signalizaciya', function (obj) {
                      signalizaciyaON = obj.newState.val;
                  });
                  
                  on('mqtt.0.myhome.Bedroom.Motion', function (obj) {
                  	 if (signalizaciyaON && (obj.newState.val === 1 || obj.newState.val === "1")){
                  		 sendTo("pushover", {
                  			message:  'ВНИМАНИЕ!!! Замечено движение в спальне',
                  			title:    'Сигнализация',
                  			url: '',
                  			url_title: '', 
                  		});
                  	 }
                  });
                  on('mqtt.0.myhome.Guestroom.Motion', function (obj) {
                  	 if (signalizaciyaON && (obj.newState.val === 1 || obj.newState.val === "1")){
                  		 sendTo("pushover", {
                  			message:  'ВНИМАНИЕ!!! Замечено движение в зале',
                  			title:    'Сигнализация',
                  			url: '',
                  			url_title: '', 
                  		});
                  	 }
                  });  
                  
                  1 Antwort Letzte Antwort
                  0
                  • I Offline
                    I Offline
                    instalator
                    schrieb am zuletzt editiert von
                    #16

                    На счет флагов….

                    on('mqtt.0.myhome.Mother.DomofonRing', function (obj) {
                       if (obj.newState.val === '1' || obj.newState.val === 1){
                           var TVon = getState('mqtt.0.myhome.RS232.LGTV_PWR').val;
                           var TVsource = getState('mqtt.0.myhome.RS232.LGTV_Source').val;
                           var flag_domofon = getState('javascript.0.flag_domofon').val;
                               if (flag_domofon === '0'){
                                    sendTo("pushover", {
                                        message:  'Звонок домофона',
                                        title:    'Домофон',
                                        url: 'http://192.168.1.190:8087/set/mqtt.0.myhome.Mother.DomofonOpen?value=1&prettyPrint',
                                        url_title: 'ОТКРЫТЬ ДВЕРЬ!', 
                                    });
                                setState('javascript.0.flag_domofon', '1'); 
                                    if (TVon === '1' || TVon === 1){
                                       setState('mqtt.0.myhome.RS232.LGTV_Source', 'av2');
                                       setTimeout(function() { setState('mqtt.0.myhome.RS232.LGTV_Source', TVsource.toLowerCase()); }, 7000);
                                   }
                               }
                        }
                       else { }
                       setTimeout(function() { setState('javascript.0.flag_domofon', '0'); }, 10000);
                    });
                    

                    var flag_domofon = getState('javascript.0.flag_domofon').val;

                    Создаем переменную в базе в качестве флага, много где приходится применять и переменные со временем разрастаются, может сделать возможность создавать невидимые в общем списке переменные флагов? или написать какую нибудь функцию для таких ситуаций (хотя скорее нужны глобальные переменные).

                    Может конечно есть и проще вариант написать такой код, главное чтобы был читаемый, иначе через год уже не разберешь что к чему)

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

                    http://blog.instalator.ru/

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

                      Этот код делает тоже самое, что твой, только не создает глобальных переменных.

                      var flag_domofon = false;
                      
                      on('mqtt.0.myhome.Mother.DomofonRing', function (obj) {
                      	if (obj.newState.val === '1' || obj.newState.val === 1) {
                      
                      		var TVon     = getState('mqtt.0.myhome.RS232.LGTV_PWR').val;
                      		var TVsource = getState('mqtt.0.myhome.RS232.LGTV_Source').val;
                      
                      		if (!flag_domofon){
                      			sendTo("pushover", {
                      				message:  'Звонок домофона',
                      				title:    'Домофон',
                      				url: 'http://192.168.1.190:8087/set/mqtt.0.myhome.Mother.DomofonOpen?value=1&prettyPrint',
                      				url_title: 'ОТКРЫТЬ ДВЕРЬ!', 
                      			});
                      
                      			flag_domofon = true;
                      
                      			if (TVon === '1' || TVon === 1) {
                      				setState('mqtt.0.myhome.RS232.LGTV_Source', 'av2');
                      				setTimeout(function() { 
                      					setState('mqtt.0.myhome.RS232.LGTV_Source', TVsource.toLowerCase()); 
                      				}, 7000);
                      			}
                      			setTimeout(function() { 
                      				flag_domofon = false; 
                      			}, 10000);
                      		}
                      	}
                      });
                      
                      1 Antwort Letzte Antwort
                      0
                      • I Offline
                        I Offline
                        instalator
                        schrieb am zuletzt editiert von
                        #18

                        @Bluefox:

                        Этот код делает тоже самое, что твой, только не создает глобальных переменных.

                        var flag_domofon = false;
                        
                        on('mqtt.0.myhome.Mother.DomofonRing', function (obj) {
                        	if (obj.newState.val === '1' || obj.newState.val === 1) {
                        	
                        		var TVon     = getState('mqtt.0.myhome.RS232.LGTV_PWR').val;
                        		var TVsource = getState('mqtt.0.myhome.RS232.LGTV_Source').val;
                        	
                        		if (!flag_domofon){
                        			sendTo("pushover", {
                        				message:  'Звонок домофона',
                        				title:    'Домофон',
                        				url: 'http://192.168.1.190:8087/set/mqtt.0.myhome.Mother.DomofonOpen?value=1&prettyPrint',
                        				url_title: 'ОТКРЫТЬ ДВЕРЬ!', 
                        			});
                        			
                        			flag_domofon = true;
                        			
                        			if (TVon === '1' || TVon === 1) {
                        				setState('mqtt.0.myhome.RS232.LGTV_Source', 'av2');
                        				setTimeout(function() { 
                        					setState('mqtt.0.myhome.RS232.LGTV_Source', TVsource.toLowerCase()); 
                        				}, 7000);
                        			}
                        			setTimeout(function() { 
                        				flag_domofon = false; 
                        			}, 10000);
                        		}
                        	}
                        });
                        ```` `  
                        

                        а скрипты разве не перезапускаются постоянно через определенное время?

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

                        http://blog.instalator.ru/

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

                          Нет.. Даже не пойму, как ты вышел на такие домыслы.

                          Кстати onkyo работает? Там же была ещё какая-то проблемка.

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

                            @Bluefox:

                            Нет.. Даже не пойму, как ты вышел на такие домыслы.

                            Кстати onkyo работает? Там же была ещё какая-то проблемка. `
                            Да я уже и сам не пойму :)

                            Да вроде работает все, хотя уже не помню толи в драйвере подправлено толи руками подправил в файле. На гите точно правильно все должно быть)

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

                            http://blog.instalator.ru/

                            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

                            349

                            Online

                            32.6k

                            Benutzer

                            82.3k

                            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