NEWS
Вопросы по написанию скриптов
-
Устанавливаете драйвер javascript и в нем создаете скрипт. `
Установил Javascript Script Engine.Ну никак не пойму как в нем создать скрипт. В настройках драйвера ничего подобного нет. :-(
-
Устанавливаете драйвер javascript и в нем создаете скрипт. `
Установил Javascript Script Engine.Ну никак не пойму как в нем создать скрипт. В настройках драйвера ничего подобного нет. :-( `
В админке должна появиться закладка "Скрипты". Надо принудительно обновить страницу, если не видно. -
Устанавливаете драйвер javascript и в нем создаете скрипт. `
Установил Javascript Script Engine.Ну никак не пойму как в нем создать скрипт. В настройках драйвера ничего подобного нет. :-(
В админке должна появиться закладка "Скрипты". Надо принудительно обновить страницу, если не видно.
Спасибо! А я-то обновлял инфо о драйверах. :-)И на последок, в какое место вставить cron для строки setState("mqtt.0.beeiot.Bee-RGB.lcd.line3", "Громкость " + getState("squeezebox.0.Children.volume").val + " %"); чтобы она выполнялась каждые 2 секунды?
Скрипт on({id: 'mqtt.0.beeiot.Bee-RGB.gpioint1', change: 'any'}, function (obj) {
setState("squeezebox.0.Children.volume", getState("squeezebox.0.Children.volume").val + 1);
}); - работает безупречно!!!
-
И на последок, в какое место вставить cron для строки setState("mqtt.0.beeiot.Bee-RGB.lcd.line3", "Громкость " + getState("squeezebox.0.Children.volume").val + " %"); чтобы она выполнялась каждые 2 секунды?
Скрипт on({id: 'mqtt.0.beeiot.Bee-RGB.gpioint1', change: 'any'}, function (obj) {
setState("squeezebox.0.Children.volume", getState("squeezebox.0.Children.volume").val + 1);
}); - работает безупречно!!! `
А зачем? согласно документации на https://github.com/ioBroker/ioBroker.javascript
Функция "on" запускает "слушатель" на изменение или обновления состояния.
Соответственно если запустить в "Скриптах" 1 раз - будет слушать и реагировать всегда.
-
А зачем? согласно документации на https://github.com/ioBroker/ioBroker.javascript
Функция "on" запускает "слушатель" на изменение или обновления состояния.
Соответственно если запустить в "Скриптах" 1 раз - будет слушать и реагировать всегда. `
Согласно ТЗ человека.
@MSapogov:А так -же при появлении события mqtt.0.beeiot.Bee-RGB.gpioint1 неважно какое, главное новое событие - изменить значение squeezebox.0.Children.volume на +1 `
И на последок, в какое место вставить cron для строки setState("mqtt.0.beeiot.Bee-RGB.lcd.line3", "Громкость " + getState("squeezebox.0.Children.volume").val + " %"); чтобы она выполнялась каждые 2 секунды? `
schedule("*/2 * * * * *", function () {
setState("mqtt.0.beeiot.Bee-RGB.lcd.line3", "Громкость " + getState("squeezebox.0.Children.volume").val + " %");
});
-
Проблема - если в скрипте ошибка, драйвер Javascript начинает бесконечно перезапускаться, в лог пишет одно и то же:
host-home 2016-09-14 12:36:08.572 info Restart adapter system.adapter.javascript.0 because enabled host-home 2016-09-14 12:36:08.571 error instance system.adapter.javascript.0 terminated with code 0 (OK) javascript-0 2016-09-14 12:36:08.563 info terminating Error: 2016-09-14 12:36:08.559 error at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:78:26) Error: 2016-09-14 12:36:08.559 error at errnoException (dns.js:27:10) Error: 2016-09-14 12:36:08.559 error getaddrinfo ENOTFOUND 192.168.2.10:8088 192.168.2.10:8088:80при этом зайти в "Скрипты" и исправить её невозможно - страница "Скрипты" не загружается.
Что в таких случаях делать?
-
Проблема - если в скрипте ошибка, драйвер Javascript начинает бесконечно перезапускаться
при этом зайти в "Скрипты" и исправить её невозможно - страница "Скрипты" не загружается.
Что в таких случаях делать? `
Можно попробовать остановить неработающий скрипт и перезапустить драйвер.Вкладка "Объекты" - далее раскрываем список с нужным экземпляром драйвера (к примеру javascript.0), далее "scriptEnabled" - группа скриптов с искомым и значение true меняем на false.
Перезапускаем драйвер, смотрим где ошибка.
-
Пытаюсь написать скрипт включения света, все вроде работает но он сам по себе включается каждые 30сек (я так понимаю время опроса Меги) как это обойти?
сам скрипт:
on({id: "megad.1.p1_Движение_гостинная"/*Движение_гостинная*/, change: 'ne'}, function (obj) { if (getState('onSensor').val === 1 && getState('svetOn').val === 0){ log(getState('svetOn').val); clearTimeout(timer); var lux_kitchen = getState("megad.1.p10_Свет_гостинная"/*Свет_гостинная*/).val; log(lux_kitchen); if (getState('svetOn').val === 0){flag_motion_kitchen = true;} if (flag_motion_kitchen){ log('запускаем таймер отключения на 30000'); timer = setTimeout(function() { setState("megad.1.p10_Свет_гостинная"/*Свет_гостинная*/, 0); flag_motion_kitchen = false; setState('svetOn',0); log("выкл свет по таймеру"); }, 30000 );} if (obj.newState.val === true && flag_motion_kitchen){ setState("megad.1.p10_Свет_гостинная"/*Свет_гостинная*/, 255); setState('svetOn',3); log("вкл свет"); } } }); -
Пытаюсь написать скрипт включения света, все вроде работает но он сам по себе включается каждые 30сек (я так понимаю время опроса Меги) как это обойти?
сам скрипт:
on({id: "megad.1.p1_Движение_гостинная"/*Движение_гостинная*/, change: 'ne'}, function (obj) { if (getState('onSensor').val === 1 && getState('svetOn').val === 0){ log(getState('svetOn').val); clearTimeout(timer); var lux_kitchen = getState("megad.1.p10_Свет_гостинная"/*Свет_гостинная*/).val; log(lux_kitchen); if (getState('svetOn').val === 0){flag_motion_kitchen = true;} if (flag_motion_kitchen){ log('запускаем таймер отключения на 30000'); timer = setTimeout(function() { setState("megad.1.p10_Свет_гостинная"/*Свет_гостинная*/, 0); flag_motion_kitchen = false; setState('svetOn',0); log("выкл свет по таймеру"); }, 30000 );} if (obj.newState.val === true && flag_motion_kitchen){ setState("megad.1.p10_Свет_гостинная"/*Свет_гостинная*/, 255); setState('svetOn',3); log("вкл свет"); } } }); ```` `Просто добавь первой строчкой
перед "if (getState('onSensor').val ==…."
if (obj.state.ack) return; -
я сделал так:
var timer; var flag_motion_kitchen = false; on({id: "megad.1.p1_Движение_гостинная"/*Движение_гостинная*/, change: 'ne'}, function (obj) { console.log("до"); if (obj.state.ack) return; console.log("после"); if (getState('onSensor').val === 1 && getState('svetOn').val === 0){ log(getState('svetOn').val); clearTimeout(timer); var lux_kitchen = getState("megad.1.p10_Свет_гостинная"/*Свет_гостинная*/).val; log(lux_kitchen); if (getState('svetOn').val === 0){flag_motion_kitchen = true;} if (flag_motion_kitchen){ log('запускаем таймер отключения на 30000'); timer = setTimeout(function() { setState("megad.1.p10_Свет_гостинная"/*Свет_гостинная*/, 0); flag_motion_kitchen = false; setState('svetOn',0); log("выкл свет по таймеру"); }, 30000 );} if (obj.newState.val === true && flag_motion_kitchen){ setState("megad.1.p10_Свет_гостинная"/*Свет_гостинная*/, 255); setState('svetOn',3); log("вкл свет хуй знает"); } } });console.log("после"); - не работает
-
Вариант с заменой === на == не помог. Все равно самопроизвольно через каждые 30 сек свет зажигается. Какие есть ещё варианты? `
Самопроизвольно он включается потому что объект обновляется каждые 30 секунд -
Вариант с заменой === на == не помог. Все равно самопроизвольно через каждые 30 сек свет зажигается. Какие есть ещё варианты? `
Значит ты шлёшь каждые 30 секунд "1".Так чего же удивляться?
Выведи значение в лог
console.log(typeof getState('onSensor').val + ' - ' + getState('onSensor').val);
-
Так он и должен срабатывать, я тогда не пойму почему если я подписался на событие датчика движения
on({id: "megad.1.p1_Движение_гостинная"/*Движение_гостинная*/, change: 'ne'}, function (obj) {почему он вызывается каждые 30 сек даже когда не приходит ни какого события от самого датчика (когда событие приходит срабатывает как нужно)
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login