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;
}
есть еще какие нибудь примерчики
-
накидал интерфейс нового драйвера,
теперь необходимо из веба пересылать сформированный 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. -
Посмотри как сделан 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 интересного? `
Просто io.connect будет работать только со встроенным сокетом. Если поставить внешний, то всё поломается.Но я тебе советую оформить свою gui как страницу в админ. ( как сцены) Тогда не надо хостить страницы, и настройки будут хорошо интегрированны. И сокет будет всегда работать как у тебя сейчас.
Насчет sysLang: ты же не собираешься интерфейс только на русском делать :D
-
Насчет sysLang: ты же не собираешься интерфейс только на русском делать :D `
Вообще-то собирался :D …Подскажи как теперь в адаптере читать то что в натив записано. `
все 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('*');**** стоит -
ок работает,
Ну и опять в адаптере не могу подписаться на изменение состояния внешней переменной
в мейн 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.
Надо понять что ты хочешь.
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