NEWS
Вопросы по написанию скриптов
- 
					
					
					
					
 Раз вы руками создали в корне, то из скрипта уберите CreateState ` 
 Да я все понял. Я чего хотел показать - что используя одинаковый ID в случае с getState ищется первое вхождение с корня объектова для createState игнорируется все что выше Javascript.X 
- 
					
					
					
					
 @kID:Раз вы руками создали в корне, то из скрипта уберите CreateState ` 
 Да я все понял. Я чего хотел показать - что используя одинаковый ID в случае с getState ищется первое вхождение с корня объектова для createState игнорируется все что выше Javascript.X ` 
 Это так работает функция createState. Создает переменные в инстанции Javascript драйвера.
- 
					
					
					
					
 Появилась задача включать выключать драйвер из скрипта. Необходимость возникла по следующей причине - драйвер, работающий с оборудованием, в случае отключения оборудования продолжает пытаться до него достучаться и слать ошибки в логи. Оборудование не всегда должно быть включенным. Поэтому логично с выключением оборудования принудительно отключать и драйвер, занимающийся его опросом. Управление драйвером пробовал делать через setState, к примеру в тесте управления включением-выключением history: setState("system.adapter.history.0.alive", true); и setState("system.adapter.history.0.alive", false); Оно так работает и я получаю желаемое. Но… отключение драйвера - все нормально, а вот включение всякий раз дает ошибку в логе (но в итоге все равно делает что надо): history.0 2017-04-27 11:22:54.125 info starting. Version 1.6.2 in /opt/iobroker/node_modules/iobroker.history, node: v4.8.2 host.AdavHome 2017-04-27 11:22:53.290 info instance system.adapter.history.0 started with pid 11319 host.AdavHome 2017-04-27 11:22:23.277 info Restart adapter system.adapter.history.0 because enabled host.AdavHome 2017-04-27 11:22:23.276 error instance system.adapter.history.0 terminated with code 7 (Adapter already running) host.AdavHome 2017-04-27 11:22:22.402 info instance system.adapter.history.0 started with pid 11285 host.AdavHome 2017-04-27 11:22:22.402 info "system.adapter.history.0" enabled host.AdavHome 2017-04-27 11:22:22.402 info object change system.adapter.history.0 Такое ощущение, что система думает что драйвер уже запущен и сначала его останавливает и только потом запускает. И всякий раз ошибка в лог. Ну и такое отрабатывает заметно медленнее, чем при включении руками. Может есть какой-то способ сделать это иначе или я что-то не так делаю? 
- 
					
					
					
					
 Появилась задача включать выключать драйвер из скрипта. Необходимость возникла по следующей причине - драйвер, работающий с оборудованием, в случае отключения оборудования продолжает пытаться до него достучаться и слать ошибки в логи. Оборудование не всегда должно быть включенным. Поэтому логично с выключением оборудования принудительно отключать и драйвер, занимающийся его опросом. Управление драйвером пробовал делать через setState, к примеру в тесте управления включением-выключением history: setState("system.adapter.history.0.alive", true); и setState("system.adapter.history.0.alive", false); Оно так работает и я получаю желаемое. Но… отключение драйвера - все нормально, а вот включение всякий раз дает ошибку в логе (но в итоге все равно делает что надо): history.0 2017-04-27 11:22:54.125 info starting. Version 1.6.2 in /opt/iobroker/node_modules/iobroker.history, node: v4.8.2 host.AdavHome 2017-04-27 11:22:53.290 info instance system.adapter.history.0 started with pid 11319 host.AdavHome 2017-04-27 11:22:23.277 info Restart adapter system.adapter.history.0 because enabled host.AdavHome 2017-04-27 11:22:23.276 error instance system.adapter.history.0 terminated with code 7 (Adapter already running) host.AdavHome 2017-04-27 11:22:22.402 info instance system.adapter.history.0 started with pid 11285 host.AdavHome 2017-04-27 11:22:22.402 info "system.adapter.history.0" enabled host.AdavHome 2017-04-27 11:22:22.402 info object change system.adapter.history.0 Такое ощущение, что система думает что драйвер уже запущен и сначала его останавливает и только потом запускает. И всякий раз ошибка в лог. Ну и такое отрабатывает заметно медленнее, чем при включении руками. Может есть какой-то способ сделать это иначе или я что-то не так делаю? ` 
 alive - это ка бы индикатор для чтенияВ драйвере Javascript включи опцию Разрешить команду "setObject" var obj = getObject("system.adapter.history.0"); obj.common.enabled = false; //or true setObject("system.adapter.history.0", obj);
- 
					
					
					
					
 Разобрался, все работает, спасибо! 
- 
					
					
					
					
 Function "setObject" is not allowed. Use adapter settings to allow it. В каком месте у адаптера это разрешается? ` 
 В админке драйвера Javascript включи опцию Разрешить команду "setObject"
- 
					
					
					
					
 Оказалось можно одной строкой при той же идее, проверил - нормально! extendObject('system.adapter.history.0', {common: {enabled: false}}); ну и соответственно true Еще раз спасибо!  
- 
					
					
					
					
 Доброго дня. Поможите советом: как запустить скрипт по нажатию кнопки и то же самое по времени. 
- 
					
					
					
					
 Доброго дня. Поможите советом: как запустить скрипт по нажатию кнопки и то же самое по времени. ` 
 В vis, виджет кнопка, ID объекта javascript.0.scriptEnabled.scriptnamevar volumeId = "sayit.0.tts.volume"; // Устанавливаем в 6:59 громкость 90 schedule("59 6 * * *", function(){ setState(volumeId,90,function(){ log('Установлена громкость '+ getState(volumeId).val); }); });или так // Скрипт запускается каждые 10 сек. function temperatur() { сам скрипт } schedule('*/10 * * * * *', temperatur); temperatur();
- 
					
					
					
					
 Ага, спасиб. По времени интересует типа отправить в 7, 12 и 17 часов, а еще сообщить о событии через 30 минут после его начала. Типа включился насос и если через 30 минут он не выключился - ТРЕВОГА…... А если выключился - то молчим в тряпочку. 
- 
					
					
					
					
 Ага, спасиб. По времени интересует типа отправить в 7, 12 и 17 часов, а еще сообщить о событии через 30 минут после его начала. Типа включился насос и если через 30 минут он не выключился - ТРЕВОГА…... А если выключился - то молчим в тряпочку. ` 
 Ищи на форуме скрипт часов
- 
					
					
					
					
 Угум-с и так уже начинаю немецкий изучать :lol: :lol: :lol: 
- 
					
					
					
					
 Угум-с и так уже начинаю немецкий изучать :lol: :lol: :lol: ` 
 На русском, в немецкой ветке примеров конечно пабольше   
- 
					
					
					
					
 О как! Использую скрипт от electric69 а вот этот топик как то пропустил… Ща попробуем. 
- 
					
					
					
					
 вопрос. почему этот скрипт шлет сообщения каждую минуту, где я накосячил? schedule("* 7,12,17 * * *", function () { log("Сообщение о температуре дома"); //setState (idSayIt, volume+';'+hour+':'+min+';Температура на улице:'+temp2.val+' °'); sendTo("telegram.0", "Температура на улице: " +getState("mqtt.0.myhome.Temp.Street").val+' °'+", в Зале: " +getState("mqtt.0.myhome.Temp.Zal").val+' °'+", в Гараже: " +getState("mqtt.0.myhome.Temp.Garage").val+' °'+", на Кухне: " +getState("mqtt.0.myhome.Temp.Kitchen").val+' °'+", на Мансарде :" +getState("mqtt.0.myhome.Temp.Mansarda").val+' °'); }); По идее должен отправлять в 7, 12 и 17 часов. начинает слать в 7 и потом ежеминутно пока не выключишь. меня хватает на 5 мин.  
- 
					
					
					
					
 лог: javascript.0 2017-05-04 07:11:00.960 info script.js.Статус_Дома.Отчет_о_температуре: Сообщение о температуре дома mqtt.0 2017-05-04 07:10:02.572 info send2Server sayit.0.tts.playing[sayit/0/tts/playing] sayit.0 2017-05-04 07:10:01.867 info saying: 7:10 Пора выходить на работу! javascript.0 2017-05-04 07:10:00.972 info script.js.Статус_Дома.Отчет_о_температуре: Сообщение о температуре дома mqtt.0 2017-05-04 07:10:00.865 info send2Server sayit.0.tts.playing[sayit/0/tts/playing] sayit.0 2017-05-04 07:10:00.849 info saying: C:\ioBroker\node_modules\iobroker.sayit/scifi.mp3 mqtt.0 2017-05-04 07:10:00.834 info send2Server sayit.0.tts.text[sayit/0/tts/text] 
- 
					
					
					
					
 вопрос. почему этот скрипт шлет сообщения каждую минуту, где я накосячил? schedule("* 7,12,17 * * *", function () { log("Сообщение о температуре дома"); //setState (idSayIt, volume+';'+hour+':'+min+';Температура на улице:'+temp2.val+' °'); sendTo("telegram.0", "Температура на улице: " +getState("mqtt.0.myhome.Temp.Street").val+' °'+", в Зале: " +getState("mqtt.0.myhome.Temp.Zal").val+' °'+", в Гараже: " +getState("mqtt.0.myhome.Temp.Garage").val+' °'+", на Кухне: " +getState("mqtt.0.myhome.Temp.Kitchen").val+' °'+", на Мансарде :" +getState("mqtt.0.myhome.Temp.Mansarda").val+' °'); }); По идее должен отправлять в 7, 12 и 17 часов. начинает слать в 7 и потом ежеминутно пока не выключишь. меня хватает на 5 мин.  ` `
 Потому что код на форуме надо оборачивать в соответствующий тэг, подправьте. https://crontab.guru
- 
					
					
					
					
 schedule("* 7,12,17 * * *", function () { log("Сообщение о температуре дома"); //setState (idSayIt, volume+';'+hour+':'+min+';Температура на улице:'+temp2.val+' °'); sendTo("telegram.0", "Температура на улице: " +getState("mqtt.0.myhome.Temp.Street").val+' °'+", в Зале: " +getState("mqtt.0.myhome.Temp.Zal").val+' °'+", в Гараже: " +getState("mqtt.0.myhome.Temp.Garage").val+' °'+", на Кухне: " +getState("mqtt.0.myhome.Temp.Kitchen").val+' °'+", на Мансарде :" +getState("mqtt.0.myhome.Temp.Mansarda").val+' °'); });Учел исправил, за ссылку Зенкуем!! Понял где проблема. 
- 
					
					
					
					
 Доброго времени! Ну я опять с вопросом. вот код: schedule("0 7/5 * * *", function () { log("Сообщение о температуре дома"); //setState (idSayIt, volume+';'+hour+':'+min+';Температура на улице:'+temp2.val+' °'); sendTo("telegram.0", "Температура на улице: " +getState("mqtt.0.myhome.Temp.Street").val+' °'+", в Зале: " +getState("mqtt.0.myhome.Temp.Zal").val+' °'+", в Гараже: " +getState("mqtt.0.myhome.Temp.Garage").val+' °'+", на Кухне: " +getState("mqtt.0.myhome.Temp.Kitchen").val+' °'+", на Мансарде :" +getState("mqtt.0.myhome.Temp.Mansarda").val+' °'); });С учетом последних ссылок должно работать в 7, 12, 17 часов… НО! в 7 уведомление получаю, а далее - ни чего. Где искать?? 
- 
					
					
					
					
 Доброго времени! Ну я опять с вопросом. вот код: schedule("0 7/5 * * *", function () { log("Сообщение о температуре дома"); //setState (idSayIt, volume+';'+hour+':'+min+';Температура на улице:'+temp2.val+' °'); sendTo("telegram.0", "Температура на улице: " +getState("mqtt.0.myhome.Temp.Street").val+' °'+", в Зале: " +getState("mqtt.0.myhome.Temp.Zal").val+' °'+", в Гараже: " +getState("mqtt.0.myhome.Temp.Garage").val+' °'+", на Кухне: " +getState("mqtt.0.myhome.Temp.Kitchen").val+' °'+", на Мансарде :" +getState("mqtt.0.myhome.Temp.Mansarda").val+' °'); });С учетом последних ссылок должно работать в 7, 12, 17 часов… НО! в 7 уведомление получаю, а далее - ни чего. Где искать?? ` schedule("0 7,12,17 * * *", function () {
 
		
	