NEWS
Однократное выполение js скрипта
-
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 что либо писать после С.
Все таки нужно прикрутить чтонибудь еще для написания скриптов. Чтобы например легче было написать что то типо Если сработал датчик уходим в цикл, если сработал второй выполняем что либо, если за определенный промежуток времени не сработал второй выходим из цикла. и т.п. и т.д.
-
Почему не срабатывает следующий код?
on({time: "* *13 */23 * *"}, function () {
log('не работает');
});
Должно срабатывать в 13 00 каждое 23 число месяца
-
Почему не срабатывает следующий код?
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 * *"
-
Как вообще описать тупую логику на 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: '', }); } }); } });
-
Как вообще описать тупую логику на 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: '', }); } });
-
На счет флагов….
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;
Создаем переменную в базе в качестве флага, много где приходится применять и переменные со временем разрастаются, может сделать возможность создавать невидимые в общем списке переменные флагов? или написать какую нибудь функцию для таких ситуаций (хотя скорее нужны глобальные переменные).
Может конечно есть и проще вариант написать такой код, главное чтобы был читаемый, иначе через год уже не разберешь что к чему)
-
Этот код делает тоже самое, что твой, только не создает глобальных переменных.
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); } } });
-
Этот код делает тоже самое, что твой, только не создает глобальных переменных.
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); } } }); ```` `
а скрипты разве не перезапускаются постоянно через определенное время?
-
Нет.. Даже не пойму, как ты вышел на такие домыслы.
Кстати onkyo работает? Там же была ещё какая-то проблемка.
-
Нет.. Даже не пойму, как ты вышел на такие домыслы.
Кстати onkyo работает? Там же была ещё какая-то проблемка. `
Да я уже и сам не поймуДа вроде работает все, хотя уже не помню толи в драйвере подправлено толи руками подправил в файле. На гите точно правильно все должно быть)