NEWS
Основные особенности системы
- 
					
					
					
					
 Bluefox, подскажи, собственно домашняя автоматизация (скрипты) будет только GUI (node-red) или текстовый редактор (ScriptEditor) так же будет присутствовать? ` 
 Ну он уже есть.1. Сначала нужно установть javascript драйвер 2. Перейти на вкладку скрипты и создать один скрипт типа JavaScript или Coffescript 3. Написать скрипт в окне и сохранить. 4. Активировать скрипт и выставить engine, как system.adapter.javascript.0 5. Активировать javascript драйвер ` Добавил скрипт, но отрабатывать не хочет, в ccuio работал. var TempSensorID = 'io.zwave.0.NODE2.SENSOR_MULTILEVEL.Temperature'; //ID датчика температуры var SwitchStateID = 'io.zwave.0.NODE3.SWITCH_MULTILEVEL.Level'; //ID реле обогревателя subscribe(TempSensorID, function (obj) { if (getState(TempSensorID) < 18 ) { //если температура меньше 18 градусов setState(SwitchStateID, 1 ); //включить обогреватель } else{ setState(SwitchStateID, 0 ); // иначе выключить обогреватель } });
- 
					
					
					
					
 @KondorSoft:`
 Можешь добавить парочку логов?var TempSensorID = 'io.zwave.0.NODE2.SENSOR_MULTILEVEL.Temperature'; //ID датчика температуры var SwitchStateID = 'io.zwave.0.NODE3.SWITCH_MULTILEVEL.Level'; //ID реле обогревателя log("Script starting.."); subscribe(TempSensorID, function (obj) { log(TempSensorID + " change detected. Value " + getState(TempSensorID)); if (getState(TempSensorID) < 18 ) { //если температура меньше 18 градусов log("Switch heater on"); setState(SwitchStateID, 1 ); //включить обогреватель } else{ log("Switch heater off"); setState(SwitchStateID, 0 ); // иначе выключить обогреватель } });
- 
					
					
					
					
 @KondorSoft:`
 Можешь добавить парочку логов?var TempSensorID = 'io.zwave.0.NODE2.SENSOR_MULTILEVEL.Temperature'; //ID датчика температуры var SwitchStateID = 'io.zwave.0.NODE3.SWITCH_MULTILEVEL.Level'; //ID реле обогревателя log("Script starting.."); subscribe(TempSensorID, function (obj) { log(TempSensorID + " change detected. Value " + getState(TempSensorID)); if (getState(TempSensorID) < 18 ) { //если температура меньше 18 градусов log("Switch heater on"); setState(SwitchStateID, 1 ); //включить обогреватель } else{ log("Switch heater off"); setState(SwitchStateID, 0 ); // иначе выключить обогреватель } }); ```` `В лог ничего не пишет, похоже не стартует скрипт. UPD: Всетаки скрипт стартует, в лог пишет 2014-11-11 11:39:36.721 - info: javascript.0 starting. Version 0.1.1 2014-11-11 11:39:36.723 - info: javascript.0 requesting all states 2014-11-11 11:39:36.724 - info: javascript.0 requesting all objects 2014-11-11 11:39:36.741 - info: javascript.0 received all states 2014-11-11 11:39:37.369 - info: javascript.0 received all objects 2014-11-11 11:39:37.417 - info: javascript.0 script.js.JavaScript: Script starting.. 2014-11-11 11:39:37.418 - info: javascript.0 script.js.JavaScript: registered 1 subscription and 0 schedules 
 61_script.png
- 
					
					
					
					
 Переставил IoBroker, что-то не так с адаптером "javascript", постоянно в лог сыпется ошибка ! 2014-11-11 14:35:49.608 - error: pmessage system.adapter.admin.0.log{"message":"pmessage system.adapter.admin.0.log{"message":"pmessage system.adapter.admin.0.log{\"message\":\"pmessage system.adapter.admin.0.log{\\\"message\\\":\\\"TypeError: Cannot read property 'parent' of undefined\\\\n at getObjectEnums (/home/boris/ioBroker.js-controller/adapter/javascript/javascript.js:840:27)\\\\n at Object.require.stateChange (/home/boris/ioBroker.js-controller/adapter/javascript/javascript.js:66:13)\\\\n at that.states.StatesRedis.change (/home/boris/ioBroker.js-controller/lib/adapter.js:1276:80)\\\\n at RedisClient. <anonymous>(/home/boris/ioBroker.js-controller/lib/redis.js:48:21)\\\\n at RedisClient.EventEmitter.emit (events.js:106:17)\\\\n at RedisClient.return_reply (/home/boris/ioBroker.js-controller/node_modules/redis/index.js:672:22)\\\\n at HiredisReplyParser. <anonymous>(/home/boris/ioBroker.js-controller/node_modules/redis/index.js:309:14)\\\\n at HiredisReplyParser.EventEmitter.emit (events.js:95:17)\\\\n at HiredisReplyParser.execute (/home/boris/ioBroker.js-controller/node_modules/redis/lib/parser/hiredis.js:43:18)\\\\n at RedisClient.on_data (/home/boris/ioBroker.js-controller/node_modules/redis/index.js:534:27)\\\\n at Socket. <anonymous>(/home/boris/ioBroker.js-controller/node_modules/redis/index.js:91:14)\\\\n at Socket.EventEmitter.emit (events.js:95:17)\\\\n at Socket. <anonymous>(stream_readable.js:736:14)\\\\n at Socket.EventEmitter.emit (events.js:92:17)\\\\n at emitReadable (_stream_readable.js:408:10)\\\\n at emitReadable (_stream_readable.js:404:5)\\\\n at readableAddChunk (_stream_readable.js:165:9)\\\\n at Socket.Readable.push (_stream_readable.js:127:10)\\\\n at TCP.onread (net.js:526:21)\\\\n\\\",\\\"severity\\\":\\\"error\\\",\\\"from\\\":\\\"javascript.0\\\",\\\"ts\\\":1415709325176} Cannot read property 'parent' of undefined\",\"severity\":\"error\",\"from\":\"javascript.0\",\"ts\":1415709326813} Cannot read property 'parent' of undefined","severity":"error","from":"javascript.0","ts":1415709330064} Cannot read property 'parent' of undefined","severity":"error","from":"javascript.0","ts":1415709336635} Cannot read property 'parent' of undefined 
 ! 2014-11-11 14:35:49.612 - error: TypeError: Cannot read property 'parent' of undefined
 ! at getObjectEnums (/home/boris/ioBroker.js-controller/adapter/javascript/javascript.js:840:27)
 ! at Object.require.stateChange (/home/boris/ioBroker.js-controller/adapter/javascript/javascript.js:66:13)
 ! at that.states.StatesRedis.change (/home/boris/ioBroker.js-controller/lib/adapter.js:1276:80)
 ! at RedisClient. <anonymous>(/home/boris/ioBroker.js-controller/lib/redis.js:48:21)
 ! at RedisClient.EventEmitter.emit (events.js:106:17)
 ! at RedisClient.return_reply (/home/boris/ioBroker.js-controller/node_modules/redis/index.js:672:22)
 ! at HiredisReplyParser. <anonymous>(/home/boris/ioBroker.js-controller/node_modules/redis/index.js:309:14)
 ! at HiredisReplyParser.EventEmitter.emit (events.js:95:17)
 ! at HiredisReplyParser.execute (/home/boris/ioBroker.js-controller/node_modules/redis/lib/parser/hiredis.js:43:18)
 ! at RedisClient.on_data (/home/boris/ioBroker.js-controller/node_modules/redis/index.js:534:27)
 ! at Socket. <anonymous>(/home/boris/ioBroker.js-controller/node_modules/redis/index.js:91:14)
 ! at Socket.EventEmitter.emit (events.js:95:17)
 ! at Socket. <anonymous>(stream_readable.js:736:14)
 ! at Socket.EventEmitter.emit (events.js:92:17)
 ! at emitReadable (_stream_readable.js:408:10)
 ! at emitReadable (_stream_readable.js:404:5)
 ! at readableAddChunk (_stream_readable.js:165:9)
 ! at Socket.Readable.push (_stream_readable.js:127:10)
 ! at TCP.onread (net.js:526:21)</anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous>
- 
					
					
					
					
 Переставил IoBroker, что-то не так с адаптером "javascript", постоянно в лог сыпется ошибка ! 2014-11-11 14:35:49.608 - error: pmessage system.adapter.admin.0.log{"message":"pmessage system.adapter.admin.0.log{"message":"pmessage system.adapter.admin.0.log{\"message\":\"pmessage system.adapter.admin.0.log{\\\"message\\\":\\\"TypeError: Cannot read property 'parent' of undefined\\\\n at getObjectEnums (/home/boris/ioBroker.js-controller/adapter/javascript/javascript.js:840:27)\\\\n at Object.require.stateChange (/home/boris/ioBroker.js-controller/adapter/javascript/javascript.js:66:13)\\\\n at that.states.StatesRedis.change (/home/boris/ioBroker.js-controller/lib/adapter.js:1276:80)\\\\n at RedisClient. <anonymous>(/home/boris/ioBroker.js-controller/lib/redis.js:48:21)\\\\n at RedisClient.EventEmitter.emit (events.js:106:17)\\\\n at RedisClient.return_reply (/home/boris/ioBroker.js-controller/node_modules/redis/index.js:672:22)\\\\n at HiredisReplyParser. <anonymous>(/home/boris/ioBroker.js-controller/node_modules/redis/index.js:309:14)\\\\n at HiredisReplyParser.EventEmitter.emit (events.js:95:17)\\\\n at HiredisReplyParser.execute (/home/boris/ioBroker.js-controller/node_modules/redis/lib/parser/hiredis.js:43:18)\\\\n at RedisClient.on_data (/home/boris/ioBroker.js-controller/node_modules/redis/index.js:534:27)\\\\n at Socket. <anonymous>(/home/boris/ioBroker.js-controller/node_modules/redis/index.js:91:14)\\\\n at Socket.EventEmitter.emit (events.js:95:17)\\\\n at Socket. <anonymous>(stream_readable.js:736:14)\\\\n at Socket.EventEmitter.emit (events.js:92:17)\\\\n at emitReadable (_stream_readable.js:408:10)\\\\n at emitReadable (_stream_readable.js:404:5)\\\\n at readableAddChunk (_stream_readable.js:165:9)\\\\n at Socket.Readable.push (_stream_readable.js:127:10)\\\\n at TCP.onread (net.js:526:21)\\\\n\\\",\\\"severity\\\":\\\"error\\\",\\\"from\\\":\\\"javascript.0\\\",\\\"ts\\\":1415709325176} Cannot read property 'parent' of undefined\",\"severity\":\"error\",\"from\":\"javascript.0\",\"ts\":1415709326813} Cannot read property 'parent' of undefined","severity":"error","from":"javascript.0","ts":1415709330064} Cannot read property 'parent' of undefined","severity":"error","from":"javascript.0","ts":1415709336635} Cannot read property 'parent' of undefined 
 ! 2014-11-11 14:35:49.612 - error: TypeError: Cannot read property 'parent' of undefined
 ! at getObjectEnums (/home/boris/ioBroker.js-controller/adapter/javascript/javascript.js:840:27)
 ! at Object.require.stateChange (/home/boris/ioBroker.js-controller/adapter/javascript/javascript.js:66:13)
 ! at that.states.StatesRedis.change (/home/boris/ioBroker.js-controller/lib/adapter.js:1276:80)
 ! at RedisClient. <anonymous>(/home/boris/ioBroker.js-controller/lib/redis.js:48:21)
 ! at RedisClient.EventEmitter.emit (events.js:106:17)
 ! at RedisClient.return_reply (/home/boris/ioBroker.js-controller/node_modules/redis/index.js:672:22)
 ! at HiredisReplyParser. <anonymous>(/home/boris/ioBroker.js-controller/node_modules/redis/index.js:309:14)
 ! at HiredisReplyParser.EventEmitter.emit (events.js:95:17)
 ! at HiredisReplyParser.execute (/home/boris/ioBroker.js-controller/node_modules/redis/lib/parser/hiredis.js:43:18)
 ! at RedisClient.on_data (/home/boris/ioBroker.js-controller/node_modules/redis/index.js:534:27)
 ! at Socket. <anonymous>(/home/boris/ioBroker.js-controller/node_modules/redis/index.js:91:14)
 ! at Socket.EventEmitter.emit (events.js:95:17)
 ! at Socket. <anonymous>(stream_readable.js:736:14)
 ! at Socket.EventEmitter.emit (events.js:92:17)
 ! at emitReadable (_stream_readable.js:408:10)
 ! at emitReadable (_stream_readable.js:404:5)
 ! at readableAddChunk (_stream_readable.js:165:9)
 ! at Socket.Readable.push (_stream_readable.js:127:10)
 ! at TCP.onread (net.js:526:21)</anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous> `
 Можешь попробовать ещё раз? Я пересмотрел javascript драйвер.
- 
					
					
					
					
 Можешь попробовать ещё раз? Я пересмотрел javascript драйвер. ` 
 Ошибок в логе нет, завтра потестирую основательно.
- 
					
					
					
					
 Можешь попробовать ещё раз? Я пересмотрел javascript драйвер. ` 
 Скрипт на события реагирует но изменить состояние устройства не выходиткоманда setState(SwitchStateID, 1 ); пытается изменить состояние "io.javascript.0.zwave.0.NODE3.SWITCH_MULTILEVEL.Level" вместо "io.zwave.0.NODE3.SWITCH_MULTILEVEL.Level" В логе такие сообщения. 2014-11-17 12:02:50.505 - info: javascript.0 script.js.Script1: io.zwave.0.NODE2.SENSOR_MULTILEVEL.Temperature change detected. Value [object Object] 2014-11-17 12:02:50.505 - info: javascript.0 script.js.Script1: Switch heater off 2014-11-17 12:02:50.507 - warn: zwave.0 Object io.javascript.0.zwave.0.NODE3.SWITCH_MULTILEVEL.Level not found 
- 
					
					
					
					
 в адартере "javascript" в файле "javascript.js" заменил вызов функции "setState" adapter.setState(id, state, function () { if (typeof callback === 'function') callback(); });на вызов "setForeignState" adapter.setForeignState(id, { val: state }, function () { if (typeof callback === 'function') callback(); });и```` 
 getState: function (id) {
 return states[id];
 }заменил на```` getState: function (id) { return states[id].val; }Скрипт начал правильно работать. 
- 
					
					
					
					
 в адартере "javascript" в файле "javascript.js" заменил вызов функции "setState" adapter.setState(id, state, function () { if (typeof callback === 'function') callback(); });на вызов "setForeignState" adapter.setForeignState(id, { val: state }, function () { if (typeof callback === 'function') callback(); });и```` 
 getState: function (id) {
 return states[id];
 }заменил на```` getState: function (id) { return states[id].val; }Скрипт начал правильно работать. ` 
 Спасибо, надо будет исправить.
- 
					
					
					
					
 @Bluefox:`
 Не смотрели в сторону https://github.com/tavendo/WAMP - Web Application Messaging Protocol?Что интересного: Поддерживает asynchronous messaging patterns: publish-subscribe и RPC. В качестве транспорта использует Websocket+JSON или TCP+MsgPack. Есть клиентская библиотека для JavaScript из браузера. Сложность базового профиля сопоставима с MQTT. Advanced профиль содержит кучу расширений. Удобно использовать для связи между плагинами и на web-интерфейс данные можно напрямую отдавать. 
- 
					
					
					
					
 @X13:@Bluefox:`
 Не смотрели в сторону https://github.com/tavendo/WAMP - Web Application Messaging Protocol?Что интересного: Поддерживает asynchronous messaging patterns: publish-subscribe и RPC. В качестве транспорта использует Websocket+JSON или TCP+MsgPack. Есть клиентская библиотека для JavaScript из браузера. Сложность базового профиля сопоставима с MQTT. Advanced профиль содержит кучу расширений. Удобно использовать для связи между плагинами и на web-интерфейс данные можно напрямую отдавать. ` 
 Спасибо за подсказку. Интересный протокол.Но время будет только после драйвера визуализации. (ioBroker.vis) 
 291_offset.png
- 
					
					
					
					
 Странные записи в админке вкладка лог ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io <– 192.168.55.3:59445 websocket connected 
 ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io: handshake authorized
 ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io <-- 192.168.55.3:50043 websocket disconnected
 ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io: transport end (undefined)
 ! controller NaN-aN-aN aN:aN:aN info Update repository "default" under "conf/sources-dist.json"
 ! node-red.0 NaN-aN-aN aN:aN:aN error 14 Dec 23:34:39 - ------------------------------------------
 ! node-red.0 NaN-aN-aN aN:aN:aN error 14 Dec 23:34:39 - [25-serial.js] Error: Cannot find module 'serialport'
 ! node-red.0 NaN-aN-aN aN:aN:aN error 14 Dec 23:34:39 - [36-rpi-gpio.js] Info : Ignoring Raspberry Pi specific node.
 ! node-red.0 NaN-aN-aN aN:aN:aN error 14 Dec 23:34:39 - [35-arduino.js] Error: Cannot find module 'arduino-firmata'
 ! node-red.0 NaN-aN-aN aN:aN:aN info starting. Version 0.0.7
 ! controller NaN-aN-aN aN:aN:aN info instance system.adapter.node-red.0 started with pid 3358
 ! socketio.0 NaN-aN-aN aN:aN:aN info socket.io server listening on port 8084
 ! socketio.0 NaN-aN-aN aN:aN:aN info starting. Version 0.0.4
 ! controller NaN-aN-aN aN:aN:aN info instance system.adapter.socketio.0 started with pid 3347
 ! history.0 NaN-aN-aN aN:aN:aN info starting. Version 0.0.7
 непонятно что это NaN-aN-aN aN:aN:aN вместо таймстампа
 291_tabelle.png
 291_before.png
- 
					
					
					
					
 Странные записи в админке вкладка лог ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io <– 192.168.55.3:59445 websocket connected 
 ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io: handshake authorized
 ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io <-- 192.168.55.3:50043 websocket disconnected
 ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io: transport end (undefined)
 ! controller NaN-aN-aN aN:aN:aN info Update repository "default" under "conf/sources-dist.json"
 ! node-red.0 NaN-aN-aN aN:aN:aN error 14 Dec 23:34:39 - ------------------------------------------
 ! node-red.0 NaN-aN-aN aN:aN:aN error 14 Dec 23:34:39 - [25-serial.js] Error: Cannot find module 'serialport'
 ! node-red.0 NaN-aN-aN aN:aN:aN error 14 Dec 23:34:39 - [36-rpi-gpio.js] Info : Ignoring Raspberry Pi specific node.
 ! node-red.0 NaN-aN-aN aN:aN:aN error 14 Dec 23:34:39 - [35-arduino.js] Error: Cannot find module 'arduino-firmata'
 ! node-red.0 NaN-aN-aN aN:aN:aN info starting. Version 0.0.7
 ! controller NaN-aN-aN aN:aN:aN info instance system.adapter.node-red.0 started with pid 3358
 ! socketio.0 NaN-aN-aN aN:aN:aN info socket.io server listening on port 8084
 ! socketio.0 NaN-aN-aN aN:aN:aN info starting. Version 0.0.4
 ! controller NaN-aN-aN aN:aN:aN info instance system.adapter.socketio.0 started with pid 3347
 ! history.0 NaN-aN-aN aN:aN:aN info starting. Version 0.0.7
 непонятно что это NaN-aN-aN aN:aN:aN вместо таймстампа `
 а как это выглядит в log/iobroker.log ??
- 
					
					
					
					
 как не странно ,нормально ,такие траблы только в web log ! 3347 
 ! 2014-12-14 23:34:27.312 - info: socketio.0 starting. Version 0.0.4
 ! 2014-12-14 23:34:27.337 - info: socketio.0 socket.io server listening on port 8084
 ! 2014-12-14 23:34:28.907 - info: controller instance system.adapter.node-red.0 started with pid 3358
 ! 2014-12-14 23:34:29.397 - info: node-red.0 starting. Version 0.0.7
 ! 2014-12-14 23:34:39.385 - error: node-red.0 14 Dec 23:34:39 - [35-arduino.js] Error: Cannot find module 'arduino-firmata'
 ! 2014-12-14 23:34:39.386 - error: node-red.0 14 Dec 23:34:39 - [36-rpi-gpio.js] Info : Ignoring Raspberry Pi specific node.
 ! 14 Dec 23:34:39 - [25-serial.js] Error: Cannot find module 'serialport'
 ! 14 Dec 23:34:39 - –----------------------------------------
 Маленько понаблюдал, если не находиться на вкладке лог в админке то пишет нон-но и тд.когда переходишь на вкладку лог начинает отображать таймстамп ! SmartHome 2014-12-16 19:40:48 info controller Restart adapter system.adapter.admin.0 because enabled 
 ! SmartHome 2014-12-16 19:40:47 info controller instance system.adapter.admin.0 started with pid 11800
 ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io <– readFile dashui-views.json
 ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io <-- getIndex
 ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io <-- getObjects
 ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io <-- touchFile www/dashui/css/dashui-user.css
 ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io <-- getDat
- 
					
					
					
					
 как не странно ,нормально ,такие траблы только в web log ! 3347 
 ! 2014-12-14 23:34:27.312 - info: socketio.0 starting. Version 0.0.4
 ! 2014-12-14 23:34:27.337 - info: socketio.0 socket.io server listening on port 8084
 ! 2014-12-14 23:34:28.907 - info: controller instance system.adapter.node-red.0 started with pid 3358
 ! 2014-12-14 23:34:29.397 - info: node-red.0 starting. Version 0.0.7
 ! 2014-12-14 23:34:39.385 - error: node-red.0 14 Dec 23:34:39 - [35-arduino.js] Error: Cannot find module 'arduino-firmata'
 ! 2014-12-14 23:34:39.386 - error: node-red.0 14 Dec 23:34:39 - [36-rpi-gpio.js] Info : Ignoring Raspberry Pi specific node.
 ! 14 Dec 23:34:39 - [25-serial.js] Error: Cannot find module 'serialport'
 ! 14 Dec 23:34:39 - –----------------------------------------
 Маленько понаблюдал, если не находиться на вкладке лог в админке то пишет нон-но и тд.когда переходишь на вкладку лог начинает отображать таймстамп ! SmartHome 2014-12-16 19:40:48 info controller Restart adapter system.adapter.admin.0 because enabled 
 ! SmartHome 2014-12-16 19:40:47 info controller instance system.adapter.admin.0 started with pid 11800
 ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io <– readFile dashui-views.json
 ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io <-- getIndex
 ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io <-- getObjects
 ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io <-- touchFile www/dashui/css/dashui-user.css
 ! legacy.0 NaN-aN-aN aN:aN:aN info socket.io <-- getDat `
 Firefox не умеет делать объекты Date из строчек ("2014-12-12 04:05:06"), а chrome может.. Пофиксил.Спасибо за баг.  
- 
					
					
					
					
 На немецкой ветке я уже некоторое время описываю новые возможности, которые появляются в ioBroker. Т.к. на русской ветке народ уже тоже поддтянулся, начну описывать и здесь. - 
при установке riсkshaw все дополнительные драйвера активируются и настраиваются автоматом. По идее, если активировать историю у состояний, то графики должны заработать. 
- 
при редактировании настроек истории появилась возможность настроить сразу несколько объектов одновременно. Для этого надо отфильтровать объекты на закладке "Объекты" (например ввести temperature) и потом нажать сверху справа кнопку с часами в строке с фильтром. 
- 
Появилась возможность распределить драйвера между несколькими ioBroker системами. Например к центральной системе (cubie/banana) подключить малину или windows PC на котором бежит node-red с owfs и датчиком температуры. 
 Для этого надо установить обычные две ioBroker системы на устройствах и потом на второстепенной выполнить в консоли: "node iobroker setup custom" Type of objects DB [file, couch, redis], default [file]: просто нажать ENTER Host of objects DB(file), default[127.0.0.1]: ввести IP адрес головной системы или DNS имя (например "cubie" или "192.168.1.100") Port of objects DB(file), default[9001]: просто нажать ENTER Type of states DB [file, redis], default [file]:просто нажать ENTER Host of states DB (file), default[cubie]:просто нажать ENTER Port of states DB (file), default[9000]:просто нажать ENTERПосле перезапуска второй системы в админке "cubie:8081" должен появится второй хост. После этого можно перейти на закладку Драйвера, выбрать в селекторе сверху нужный хост и установить необходимый драйвер. Он должен встать на выбранном хосте. Позже хост для драйвера можно поменять в "Настройках драйверов". 
- 
- 
					
					
					
					
 - Появилась возможность распределить драйвера между несколькими ioBroker системами. Например к центральной системе (cubie/banana) подключить малину или windows PC на котором бежит node-red с owfs и датчиком температуры.
 Для этого надо установить обычные две ioBroker системы на устройствах и потом на второстепенной выполнить в консоли: "node iobroker setup custom" Type of objects DB [file, couch, redis], default [file]: просто нажать ENTER Host of objects DB(file), default[127.0.0.1]: ввести IP адрес головной системы или DNS имя (например "cubie" или "192.168.1.100") Port of objects DB(file), default[9001]: просто нажать ENTER Type of states DB [file, redis], default [file]:просто нажать ENTER Host of states DB (file), default[cubie]:просто нажать ENTER Port of states DB (file), default[9000]:просто нажать ENTER ```` `Не получилось: root@orangepiplus2e:/opt/iobroker# node iobroker setup custom /opt/iobroker/iobroker:1 (function (exports, require, module, __filename, __dirname) { node node_modules/iobroker.js-controller/iobroker.js $1 $2 $3 $4 $5 ^^^^^^^^^^^^ SyntaxError: Unexpected identifier at createScript (vm.js:80:10) at Object.runInThisContext (vm.js:139:10) at Module._compile (module.js:616:28) at Object.Module._extensions..js (module.js:663:10) at Module.load (module.js:565:32) at tryModuleLoad (module.js:505:12) at Function.Module._load (module.js:497:3) at Function.Module.runMain (module.js:693:10) at startup (bootstrap_node.js:191:16) at bootstrap_node.js:612:3 root@orangepiplus2e:/opt/iobroker#
- 
					
					
					
					
 Так что делать-то и как быть? Не прокатывает мультихост: pi@ioBroker-RasPi:~ $ node iobroker setup custom internal/modules/cjs/loader.js:583 throw err; ^ Error: Cannot find module '/home/pi/iobroker' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15) at Function.Module._load (internal/modules/cjs/loader.js:507:25) at Function.Module.runMain (internal/modules/cjs/loader.js:742:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)
- 
					
					
					
					
 Нашёл инструкции. Имеем два iobroker на разных устройствах. Одно выбираем как мастер, другое будет слейв. Поехали: На мастере вводим: sudo iobroker multihost enableПросит ввести кодовую фразу, вводим, повторяем ввод. Теперь идём на слейв: посмотрим, какие мастеры видны команда sudo iobroker multihost browseответ: root@ioBroker-OPi2E:~# sudo iobroker multihost browse 1 | 192.168.1.44 | host | 192.168.1.44 | "authentication required" root@ioBroker-OPi2E:~#Отлично! Мы увидели мастера! Коннектимся к мему: root@ioBroker-OPi2E:~# sudo iobroker multihost connect 1 | 192.168.1.44 | host | 192.168.1.44 | "authentication required" Please select host [1]: 1 Enter secret phrase for connection: ******** IP Address of the host is 127.0.0.1\. It accepts no connections. Please change. root@ioBroker-OPi2E:~#И.. Как видим, вылетает ошибка: IP Address of the host is 127.0.0.1. It accepts no connections. Please change. Что делать?? Хм… Тут http://www.iobroker.net/docu/?page_id=3068&lang=de нагуглил следующее: Надо сделать так 
 ` > nano /etc/redis/redis.confСодержащаяся строка bind 127.0.0.1 должен быть дополнен IP-адресом сетевого адаптера, чтобы сервер Redis мог подключаться извне. так, например, bind 127.0.0.1 192.168.1.10 Сделано, и перезапскаем:> sudo service redis-server restart `
 Ииии… Ничего не поменялось.., ошибка таже IP Address of the host is 127.0.0.1. It accepts no connections. Please change., при этом запись bind 127.0.0.1 192.168.1.10 имеется.Снова вопрос - что делать? 
- 
					
					
					
					
 Решил ещё это сделать: ./iobroker setup customСделал и вся система рухнула. не доступен веб интерфейс, хотя в консоли говорит: root@ioBroker-OPi2E:~# iobroker status events.js:160 throw er; // Unhandled 'error' event ^ Error: listen EADDRNOTAVAIL 192.168.1.44:9000 at Object.exports._errnoException (util.js:1020:11) at exports._exceptionWithHostPort (util.js:1043:20) at Server._listen2 (net.js:1249:19) at listen (net.js:1298:10) at net.js:1408:9 at _combinedTickCallback (internal/process/next_tick.js:83:11) at process._tickCallback (internal/process/next_tick.js:104:9) root@ioBroker-OPi2E:~#В мастере слейв стал виден, но он в оффлайне. 
  
 
		
	 
		
	