NEWS
Вопросы по написанию скриптов
- 
					
					
					
					
 Проще создать нужные объекты скриптом CreateState('папка.объект', " "); ` 
 Но ведь тогда объект создается в той инстанции откуда скрипт запущент.е скрип createState('flag.alarm_10min', false); createState('flag.alarm_10min', false ); запущенный из javascript.0 создаст эти объекты в дереве javascript.0 Создай сразу всю ветку. Например kitchen.flag ` 
 Я чувствую что не догоняю.Только что понял: Корневое название должно состоять из двух частей разделённых точкой. Тогда оно при дальнейшем наполнении становится родителем. Я же просто создавал "Flag" и оно периодами вообще терялось из списка объектов, потом при обновлении появлялось, и главное к нему не цеплялись дочерние объекты, они просто лежали рядом. Хотя к названию дочерних цеплялся Flag. 
- 
					
					
					
					
 Ну чего-то наворотил, но все же работает как-то не так. Скрипт reateState('Flag.0.Alarm_10min', false); createState('Flag.0.Alarm_5min', false); createState('Flag.0.test', 10); setState (("Flag.0.Alarm_5min"), true, true); setState (("Flag.0.test"/*test*/), 20, true); log("Значение" + getState("Flag.0.test").val);Если таких объектов нигде нет, то все создается в дереве javascript.0 И далее с этими объектами работаем как обычно Но если я заранее в корне создаю эти объекты то получаю следующее 
  
 или так
  
 Т.е создается объект в дереве javascript.0 а работаем уже с объектом из корня.Я так понимаю что ситуация как в анекдоте: - 
Чего-то меня последнее время Гондурас беспокоит 
- 
А вы его поменьше чешите 
 Т.е. в корне создавать объекты нельзя!! 
- 
- 
					
					
					
					
 @kID:Ну чего-то наворотил, но все же работает как-то не так. Скрипт reateState('Flag.0.Alarm_10min', false); createState('Flag.0.Alarm_5min', false); createState('Flag.0.test', 10); setState (("Flag.0.Alarm_5min"), true, true); setState (("Flag.0.test"/*test*/), 20, true); log("Значение" + getState("Flag.0.test").val);Если таких объектов нигде нет, то все создается в дереве javascript.0 И далее с этими объектами работаем как обычно Но если я заранее в корне создаю эти объекты то получаю следующее полуторный объект.jpg или так двойной объект.jpg Т.е создается объект в дереве javascript.0 а работаем уже с объектом из корня. Я так понимаю что ситуация как в анекдоте: - 
Чего-то меня последнее время Гондурас беспокоит 
- 
А вы его поменьше чешите 
 Т.е. в корне создавать объекты нельзя!! ` 
 Руками можно
- 
- 
					
					
					
					
 Раз вы руками создали в корне, то из скрипта уберите CreateState 
- 
					
					
					
					
 Раз вы руками создали в корне, то из скрипта уберите 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] 
 
		
	