NEWS
Iobroker.socketio
- 
					
					
					
					
 запускаю пример в conn.js вываливается ошибка Uncaught TypeError: callback is not a function // callback(err, data) getStates: function (IDs, callback) { if (this._type === 'local') { return callback(null, []);[/color] } else { if (typeof IDs == 'function') { callback = IDs; IDs = null; } есть еще какие нибудь примерчики 
- 
					
					
					
					
 Добавь строчку перед вызовом servConn.init({ window.socketUrl = 'http://localhost:8084';Вечером поправлю 
- 
					
					
					
					
 есть контакт, данные посыпались  
- 
					
					
					
					
 накидал интерфейс нового драйвера, теперь необходимо из веба пересылать сформированный json в драйвер, и на стороне сервера его обрабатывать, а также где-то хранить, как это через сокеты организовать? 
 965_interf.png
- 
					
					
					
					
 накидал интерфейс нового драйвера, теперь необходимо из веба пересылать сформированный json в драйвер, и на стороне сервера его обрабатывать, а также где-то хранить, как это через сокеты организовать? ` 
 Для этих целей есть sendTo.socket.emit('sendTo', 'send', {myObject: true, myData: 1}); Что бы хранить, посмотри iobroker.template. Вообще страница напрямую может модифицировать настройки и драйвер перезапустится сам, как только объект настроек будет изменён. Можно узнать, что ты пишешь? 
- 
					
					
					
					
 что то наподобие Interactive Voice Response системы, но более расширенной,голосовое меню с выполнением заранее заготовленных сценариев… хз... что получится но пока в командировке есть свободное время, решил попробовать реализовать. идею давно вынашиваю но концепцию до конца не продумал, так что может у кого будут какие идеи - отписывайте ... 
- 
					
					
					
					
 Посмотри как сделан text2command. Там окно настроек напрямую пишет данные в конфиг. Тебе надо также. Просто socket.emit('getObject', 'system.adapter.ivr.0', function (err, obj) { obj.native = {твои настройки}; socket.emit('setObject', obj._id, obj); });А в драйвере native автоматом занесётся в adapter.config переменную. 
- 
					
					
					
					
 ок попробую. чет у меня не стартует сам драйвер, содержимое пока взял из темплейта BEST 2016-09-16 20:00:02.996 error host.BEST instance system.adapter.ivr.0 terminated with code 10 (Cannot find start file of adapter) BEST 2016-09-16 20:00:02.182 info host.BEST instance system.adapter.ivr.0 started with pid 656 
- 
					
					
					
					
 ок попробую. чет у меня не стартует сам драйвер, содержимое пока взял из темплейта BEST 2016-09-16 20:00:02.996 error host.BEST instance system.adapter.ivr.0 terminated with code 10 (Cannot find start file of adapter) BEST 2016-09-16 20:00:02.182 info host.BEST instance system.adapter.ivr.0 started with pid 656 ` 
 стартовый файл должен называться ivr.js или main.js.
- 
					
					
					
					
 стартовый файл должен называться ivr.js или main.js. ` 
 так и есть, но победил уже     пс заметил, стоит только на форум отписать проблемы сразу решаются сами по себе,мистика :shock: 
- 
					
					
					
					
 Посмотри как сделан text2command. Там окно настроек напрямую пишет данные в конфиг. Тебе надо также. Просто socket.emit('getObject', 'system.adapter.ivr.0', function (err, obj) { obj.native = {твои настройки}; socket.emit('setObject', obj._id, obj); });А в драйвере native автоматом занесётся в adapter.config переменную. ` 
 все получилось, один вопрос :socket = io.connect('http://localhost:8084'); на локалке все крутится а как в клиент передать на каком айпишнике сервер крутится? 
- 
					
					
					
					
 Посмотри как сделан text2command. Там окно настроек напрямую пишет данные в конфиг. Тебе надо также. Просто socket.emit('getObject', 'system.adapter.ivr.0', function (err, obj) { obj.native = {твои настройки}; socket.emit('setObject', obj._id, obj); });А в драйвере native автоматом занесётся в adapter.config переменную. ` 
 все получилось, один вопрос :socket = io.connect('http://localhost:8084'); на локалке все крутится а как в клиент передать на каком айпишнике сервер крутится? ` 
 Если включить в *.html вот эту строчкукак здесь https://github.com/ioBroker/ioBroker.mo … x.html#L59 То там всегда передаётся информация о сокете: var socketUrl = ":8084"; var socketSession = ""; sysLang = "en"; socketForceWebSockets = false;Тебя интересуют только socketUrl и socketSession Которые надо использовать вот так: servConn.init({ name: 'irv.0', // optional - default 'vis.0' connLink: socketUrl, // optional URL of the socket.io adapter socketSession: socketSession // optional - used by authentication }, {Кстати sysLang тоже может быть тебе интересен.  
- 
					
					
					
					
 у меня включено, видимо по наитию добавил но прокатило и socket = io.connect(); без параметров правда все так же на локалке, а что в sysLang интересного? 
- 
					
					
					
					
 у меня включено, видимо по наитию добавил но прокатило и socket = io.connect(); без параметров правда все так же на локалке, а что в sysLang интересного? ` 
 Просто io.connect будет работать только со встроенным сокетом. Если поставить внешний, то всё поломается.Но я тебе советую оформить свою gui как страницу в админ. ( как сцены) Тогда не надо хостить страницы, и настройки будут хорошо интегрированны. И сокет будет всегда работать как у тебя сейчас. Насчет sysLang: ты же не собираешься интерфейс только на русском делать  
- 
					
					
					
					
 Насчет sysLang: ты же не собираешься интерфейс только на русском делать  ` `
 Вообще-то собирался … …Подскажи как теперь в адаптере читать то что в натив записано. 
- 
					
					
					
					
 Насчет sysLang: ты же не собираешься интерфейс только на русском делать  ` `
 Вообще-то собирался … …Подскажи как теперь в адаптере читать то что в натив записано. ` 
 все native настройки находятся в переменнойadapter.config Она уже для тебя считана и заполнена. Но на неё можно ссылаться только после вызова ready. 
- 
					
					
					
					
 ок работает, Ну и опять в адаптере не могу подписаться на изменение состояния внешней переменной ! ```` 
 // is called if a subscribed state changes
 adapter.on('stateChange', function (id, state) {if (state && !state.ack && state.val) { adapter.log.info('stateChange ' + id + ' ' + JSON.stringify(state)); } // Warning, state can be null if it was deleted! // you can use the ack flag to detect if it is status (true) or command (false) 
 if (state && !state.ack) {
 adapter.log.info('ack is not set!');
 }
 });в мейн ****adapter.subscribeStates('*');**** стоит
- 
					
					
					
					
 есть ли возможность выполнять скрипты через eval? или как в брокере достучаться до драйвера скриптов, чтоб через веб создавать редактировать? 
- 
					
					
					
					
 ок работает, Ну и опять в адаптере не могу подписаться на изменение состояния внешней переменной в мейн adapter.subscribeStates('');* стоит ` 
 Это действительно внешняя? не ivr.0.something?Тогда adapter.subscribeForeignStates('имя');Я не советую подписываться на ВСЕ внешние переменные. Это нагружает систему без необходимости 
- 
					
					
					
					
 есть ли возможность выполнять скрипты через eval? ` 
 Есть.evalResult = eval('localVar = "eval";');или так: var f = new Function('x', 'y', 'return x+y'); f(3, 4)или как в брокере достучаться до драйвера скриптов, чтоб через веб создавать редактировать? ` 
 Просто создаёшь объект script.js.ivr.My_script{ "common": { "name": "My script", "engineType": "Javascript/js", "source": "console.log('test');", "engine": "system.adapter.javascript.0", "enabled": true }, "native": {}, "_id": "script.js.ChartTest", "type": "script" }И он появляется в списке. Можем договорится, что бы я добавил свойство readOnly и тогда их нельзя будет изменять. Или visible: false. Надо понять что ты хочешь. 
 
		
	