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
    988

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

                      474

                      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