NEWS
Вопросы по написанию скриптов
-
Как правильно сделать несколько таймаутов? Нужно мегой помигать через 2 сек.
Вот так срабатывает первый setTimeout
var url = 'http://192.168.0.14/sec/?cmd=7:2';
request(url);
setTimeout(function(){ request(url); }, 2000);
setTimeout(function(){ request(url); }, 2000);
setTimeout(function(){ request(url); }, 2000);
Если делаю вложенные, то работает, но так ведь и запутаться можно.
setTimeout(function(){
request(url);
setTimeout(function(){ request(url); }, 2000);
}, 2000);
Есть ли более красивый/правильный пример? `
setTimeoutvar url = 'http://192.168.0.14/sec/?cmd=7:2';
request(url);
setTimeout(function(){ request(url); }, 2000);
setTimeout(function(){ request(url); }, 4000);
setTimeout(function(){ request(url); }, 6000); `
Правильнее будет сделать так:
var url = 'http://192.168.0.14/sec/?cmd=7:2'; function blink(count) { if (count === undefined) count = 0; if (count > 3) return; request(url); setTimeout(blink, 2000, count + 1); } blink(); -
`var idSayIt = "sayit.0.tts.text"; var message = []; message.push('Доброе утро.'); message.push('За окном 7 градусов.'); message.push('Прогноз погоды на завтра'); for(var i=0; i<message.length; i++){/setstate/(idsayit,/message[i]);/log(message[i]);/}<e=""></message.length;>` Почему данный код работает не корректно, то есть может второе сообщение проговорить два раза, а последнее не произнести?[/i][/i] -
`var idSayIt = "sayit.0.tts.text"; var message = []; message.push('Доброе утро.'); message.push('За окном 7 градусов.'); message.push('Прогноз погоды на завтра'); for(var i=0; i<message.length; i++){/setstate/(idsayit,/message[i]);/log(message[i]);/}<e=""></message.length;>` Почему данный код работает не корректно, то есть может второе сообщение проговорить два раза, а последнее не произнести? А в лог норм выводит?[/i][/i] ``` ` -
В лог да, нормально `
Данные пишутся без задержки, я думаю в этом причина, может сделать опрос закончилось ли прогаваривание текущего потом подавать на вывод следующие данные -
Попробуй так:
`var idSayIt = "sayit.0.tts.text"; var message = []; message.push({text: 'Доброе утро.', interval: 3000}); message.push({text: 'За окном 7 градусов.', interval: 4000}); message.push({text: 'Прогноз погоды на завтра', interval: 5000}); var interval = 0; for(var i=0; i<message.length; i++){/settimeout(function/(text)/{/setstate/(idsayit,/text);/log(text);/},/interval,/message[i].text);/interval/+="message[i].interval;" }<e=""></message.length;>` [2678_error.png](/assets/uploads/files/2678_error.png) [/i][/i] -
Можно ли как то отследить изменение объекта, если в этот объект происходит запись одного и того же значения (например: up), но с интервалом например в 2-3 секунды?
Я пока только так придумал:
on('javascript.0.kodi.ExecuteAction',function (obj) { if(obj.newState.val !== false){ sendCommand(obj.newState.val); setState('javascript.0.kodi.ExecuteAction', false) } });Может лучше есть решение?
-
Как правильно обзывать переменные, если это 5 датчиков температуры и 7 датчиков движения, все они разбросаны по комнатам.
kitchen.temp1
kitchen.temp2
kitchen.motion-sensor1
kitchen.motion-sensor2
или (при этом во кладке категории создать комнаты и эти датчики привязать по комнатам)
temp1
temp2
motion-sensor1
motion-sensor2
-
Как правильно обзывать переменные, если это 5 датчиков температуры и 7 датчиков движения, все они разбросаны по комнатам.
kitchen.temp1
kitchen.temp2
kitchen.motion-sensor1
kitchen.motion-sensor2
или (при этом во кладке категории создать комнаты и эти датчики привязать по комнатам)
temp1
temp2
motion-sensor1
motion-sensor2 `
У меня так:Bedroom.tempradiator
Bedroom.temproom
И тп
-
Вопрос, а как можно выполнить команду````
cat /homi/pi/1.txtИ второй вопрос, если js стоит на одном сервере, а команду чтения надо выполнить на другом, как это реализуется? `http://forum.iobroker.org/viewtopic.php?f=26&t=1117 ты про это?
У меня получилось запустить батник но только локально, с удаленного компа не получилось, права навешивал, в политиках разрешал, но там была команда на выключение компа, с txt думаю правами достаточно будет разрулить
-
Ага, можно так, а можно через exec. Вроде разобрался и прочитал файл. А вот как прочитать файл на дочернем сервере, неужто надо драйвер js туда вторым устанавливать и там скрипт писать?
2716_variablen.jpg -
Как до этого файла можно достучаться? По http, ftp, smb, ssh …? `
А если его примонтировать как папку на комп где запускается скрипт? и потом попробовать к нему обратится -
А если его примонтировать как папку на комп где запускается скрипт? и потом попробовать к нему обратится `
Я монтирую в систему яндекс.диск для создания резервных копий по webdav - все работает.На целевой системе (откуда файл взять) у вас винда или linux?
UPD. А, вижу, у вас целевой файл на малинке, скорее всего там линукс))
Если когда нибудь потребуется доступ через окна, то samba, если нет, то вариантов масса.
Можно просто по ssh подключиться к малинке и взять содержимое тем же cat, или подмонтировать в локальную машину, использовать можно https://help.ubuntu.com/12.04/serverguide/network-file-system.html, rsync, FTP, SCP и т.д. Посмотрите в инете, что проще настроить для вас, тем и воспользуйтесь…
-
Если обсуждаете мои вопросы, то там другая ситуация. Я связал 2 сервера IoBroker. Один, на котором все работает и основной, стоят все драйвера включая js, а второй дочерний на нем подключены 1-wire датчики температуры, и т.к. они подключены через GPIO, OWFS не работает и приходится читать напрямую. Вот и думал что можно указать что например в данном месте надо обратится к дочернему серверу и считать файл, а результат вернуть на основной и дальше уже обрабатывать. В итоге решил поставить там JS драйвер и перенес туда скрипт, все работает.
Получается некий минус, что будут одинаковые драйвера на разных серверах, и за обновлением придется следить на обоих, а не как за единой эко-системой.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden