Есть версия 0.7.7.
` > Вызови в …/node_modules/node-red-vis простоnpm update
Вызвал, после этого как раз все и сломалось С версией 0.7.4 все работало прекрасно.
852_screen_shot_2015-11-08_at_23.15.15.png
Есть версия 0.7.7.
` > Вызови в …/node_modules/node-red-vis простоnpm update
Вызвал, после этого как раз все и сломалось С версией 0.7.4 все работало прекрасно.
852_screen_shot_2015-11-08_at_23.15.15.png
Я обновил node-red-vis до актуальных версий. `
Спасибо! На 0.7.4 обновилось без проблем.
А я правильно понимаю, что теперь node-red-vis так просто не обновить до ioBroker.vis версии 0.7.5 по причине "remove jqueryUI files to ioBroker.web". То есть нужно самостоятельно править обращение к соответствующим скриптам jQuery? `
Нет. Всё должно работать. Вызови в …/node_modules/node-red-vis простоnpm update `
Так сейчас же в https://github.com/GermanBluefox/node-red-vis/blob/master/package.json прописана версия 0.7.4. Я попытался обновить до 0.7.5 как раньше тут писал копированием, теперь ломаются зависимости на jquery - не находит нужных файлов. Или я что-то не так делаю.
Я обновил node-red-vis до актуальных версий. `
Спасибо! На 0.7.4 обновилось без проблем.
А я правильно понимаю, что теперь node-red-vis так просто не обновить до ioBroker.vis версии 0.7.5 по причине "remove jqueryUI files to ioBroker.web". То есть нужно самостоятельно править обращение к соответствующим скриптам jQuery?
Люди уже решили эту проблему.
Еще раз хочу выразить огромное спасибо! Идея из ссылки выше воплотилась у меня в универсальный КЭШиратор данных (по ссылке надо описывать каждый топик, я сделал так, что кэшируются все топики, начинающиеся на "myhome/tele/", куда все мои устройства отправляют данные). Если интересно, то код и картинка ниже.
Чтобы не ломать форум - код Node-Red прогнал через beautify'er.
[
{
"id": "346b51f3.cb94ae",
"type": "mqtt-broker",
"broker": "localhost",
"port": "1883",
"clientid": ""
},
{
"id": "ed457908.12ba88",
"type": "vis in",
"language": "en",
"x": 412,
"y": 203,
"z": "9aff093a.6500f8",
"wires": [
[
"4a594456.b5a6bc"
]
]
},
{
"id": "4a594456.b5a6bc",
"type": "function",
"name": "Check for page refresh",
"func": "if (msg.topic === \"vis.control.data\") {\n msg.payload = [];\n for (var state in context.global.states)\n msg.payload.push({ topic: state, data: context.global.states[state] });\n\n return msg;\n}\nelse {\n return null;\n}",
"outputs": 1,
"noerr": 0,
"x": 588,
"y": 202,
"z": "9aff093a.6500f8",
"wires": [
[
"5fffe5c0.a0001c"
]
]
},
{
"id": "5fffe5c0.a0001c",
"type": "splitter",
"name": "Iterate on states",
"property": "payload",
"x": 806,
"y": 202,
"z": "9aff093a.6500f8",
"wires": [
[
"be39c3b6.41c64"
]
]
},
{
"id": "6169e126.9e962",
"type": "function",
"name": "Save State",
"func": "context.global.states = context.global.states || [];\ncontext.global.states[msg.topic] = msg.payload;\n\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 220,
"y": 204,
"z": "9aff093a.6500f8",
"wires": [
[
"ed457908.12ba88"
]
]
},
{
"id": "be39c3b6.41c64",
"type": "function",
"name": "Post cached states",
"func": "msg.topic = msg.payload.topic;\nmsg.payload = msg.payload.data;\ndelete msg.payload_unsplit;\n\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 600,
"y": 312,
"z": "9aff093a.6500f8",
"wires": [
[
"ed457908.12ba88"
]
]
},
{
"id": "5f03e43c.a0fc1c",
"type": "mqtt in",
"name": "Telemetry Data",
"topic": "myhome/tele/#",
"broker": "346b51f3.cb94ae",
"x": 135,
"y": 65,
"z": "9aff093a.6500f8",
"wires": [
[
"6169e126.9e962"
]
]
},
{
"id": "de8d6942.217298",
"type": "inject",
"name": "Go",
"topic": "",
"payload": "",
"payloadType": "none",
"repeat": "",
"crontab": "",
"once": false,
"x": 218,
"y": 416,
"z": "9aff093a.6500f8",
"wires": [
[
"4221520e.bddeac"
]
]
},
{
"id": "4221520e.bddeac",
"type": "function",
"name": "Dump states cache to console",
"func": "for (var state in context.global.states)\n console.log(\"state '\" + state + \"' = '\" + context.global.states[state] + \"'\");\n\nreturn null;",
"outputs": 1,
"noerr": 0,
"x": 470,
"y": 417,
"z": "9aff093a.6500f8",
"wires": [
[]
]
}
]
Люди уже решили эту проблему.
Интересная идея хранить данные в общем контексте node-red, хотя по сути мелкая базёнка сделает тоже самое только данные будут храниться на диске, а не в памяти. Примерно в тако ключе я и думал - мысли сходятся :). Спасибо за наводку!
Дело в том, что от node-red отказваться не надо. node-red интегрирован в ioBroker. Отличие только то, что добавляются node для обмена данными с ioBroker. `
Да, это я понимаю. А где можно почитать про потребление ресурсов ioBroker? Сейчас у меня на сервере где стоит node-red со всеми моими модулями/скриптами/нодами + ioBroker.vis занято меньше 256МБ памяти (и это включая саму ОС). Здесь возникает пара вариантов - иметь "облачные" виртуалки с серверной частью, либо docker, либо микрокомпьютер.
В любом случае спасибо за вашу работу! ioBroker со всеми его модулями/драйверами, это как глоток воздуха среди засилия проприетарщины и тяжелых java-приложений или непонятных монолитных поделок на коленке
А сейчас разве не так?) `
Ну из предыдущей темы с вопросом по апгрейду вы, наверное, уже поняли, что я использую node-red-vis (ioBroker.vis в связке с node-red). Пока у меня получается, что изменение состояния кнопки на ON из ioBroker.vis приводит к отправке команды устройству, здесь все хорошо. Но если обновить страничку в ioBroker.vis то в интерфейсе кнопка станет OFF тогда как реально на устройстве она в состоянии ON. Так что нет - не совсем сейчас так. Может я что и неправильно делаю конечно, но поэтому и спросил.
Я уже увидел, что в момент обновления страницы от ioBroker.vis в node-red прилетают три события, одно из которых vis.control.data с именем обновленной страницы. Поэтому пока идея иметь простенькую табличку в БД (хоть в sqlite с которой все работает из коробки и ставить дополнительные сервисы не надо) которая бы содержала список устройств на странице и по событию от vis node-red выплевывал бы эти данные в vis или вообще node-red отправлял бы команду устройствам опубликовать свой статус (тем более, что в устройствах данный функционал уже есть).
Может конечно я горожу слишком сложные схемы и здесь надо ставить полноценный ioBroker, но пока не хотелось бы отказываться от node-red, потому что в нем уже много чего реализовано.
LiveChart не умеет такое. Для этого нужно использовать iobroker.flot. `
А я правильно понимаю, что эта штука работает отдельно от ioBroker.vis? Можно ли как html эти графики затащить в vis? Хотя с другой стороны как обновлять данные…
Есть ли вообще у ioBroker.vis возможность отображать исторические данные? Или как-то запоминать состояние виджета, без повторной отправки на него данных. То есть, к примеру, если взять просто on/off выключатель изменить его состояние и обновить страничку и чтобы выключатель остался как был.
А подскажите, как в виджет LiveChart из RGraph загружать данные при загрузке страницы ioBroker.vis? У меня получается, что если я прописываю ObjectID - все работает, график отображается, но после обновления страницы или заходе с другого устройства все графики пропадают.
Да и вообще - если у любого виджета прописать ObjectID, насколько я понимаю статус обновится только в случае попадания каких-то данных, а если отправка данных осуществляется с большими периодами - виджеты будут показывать 0? Как это можно обойти?
Спасибо!
iLexey, mqtt в iobroker работает "из коробки", так что Ваши модули вполне можно использовать. Хотя я не сторонник по воздуху, если есть возможность кинуть кабель.
Пишу с пульта…. `
Да, я это понимаю. Однако насколько удобно с ним работать? В OpenHAB он тоже есть "из коробки", однако работа с ним ужасна. Повторюсь, Node-RED изначально разрабатывался именно под MQTT и там ничего дополнительно крутить/настраивать не надо - оно просто работает! Да, и как я уже говорил, мне нужно только взаимодействие с MQTT, а ioBroker это все же намного больше да и требования к ресурсам будут выше. Хотя в конечном счете только эксперимент покажет, что удобнее/лучше/безглючнее и так далее А ioBroker я держу в планах на попробовать, кода будет достаточно времени
Ну так работает мой совет? `
Как я написал выше - пропали все дополнительные модули. Я нашел, что в файле node-red-vis/node_modules/iobroker.vis/www/js/config.js должно быть что-то вроде (после обновления там только те базовые модули находятся)
var visConfig = {
"widgetSets": [
"rgraph",
"bars",
"basic",
"colorpicker",
{ "name": "fancyswitch", "depends": [ "basic" ] },
"hqwidgets",
"jqplot",
{ "name": "jqui-mfd", "depends": [ "basic", "jqui" ] },
{ "name": "jqui", "depends": [ "basic" ] },
{ "name": "lcars", "depends": [ "basic" ] },
{ "name": "metro", "depends": [ "jqui-mfd", "basic" ] },
"plumb",
"tabs",
"timeandweather",
"weather-adapter",
"keyboard"
]
};
А так же в папке node-red-vis/node_modules/iobroker.vis/www/widgets должны быть файлы виджетов, которые отсутствуют после обновления. Ведь должен быть какой-то быстрый способ их добавить, кроме как копировать вручную?
Update: вроде все решилось/починилось копированием файлов виджетов
cp -rf node-red-vis/node_modules/iobroker.vis-bars/widgets/* node-red-vis/node_modules/iobroker.vis/www/widgets
cp -rf node-red-vis/node_modules/iobroker.vis-colorpicker/widgets/* node-red-vis/node_modules/iobroker.vis/www/widgets
cp -rf node-red-vis/node_modules/iobroker.vis-fancyswitch/widgets/* node-red-vis/node_modules/iobroker.vis/www/widgets
cp -rf node-red-vis/node_modules/iobroker.vis-hqwidgets/widgets/* node-red-vis/node_modules/iobroker.vis/www/widgets
cp -rf node-red-vis/node_modules/iobroker.vis-jqui-mfd/widgets/* node-red-vis/node_modules/iobroker.vis/www/widgets
cp -rf node-red-vis/node_modules/iobroker.vis-keyboard/widgets/* node-red-vis/node_modules/iobroker.vis/www/widgets
cp -rf node-red-vis/node_modules/iobroker.vis-lcars/widgets/* node-red-vis/node_modules/iobroker.vis/www/widgets
cp -rf node-red-vis/node_modules/iobroker.vis-metro/widgets/* node-red-vis/node_modules/iobroker.vis/www/widgets
cp -rf node-red-vis/node_modules/iobroker.vis-plumb/widgets/* node-red-vis/node_modules/iobroker.vis/www/widgets
cp -rf node-red-vis/node_modules/iobroker.vis-rgraph/widgets/* node-red-vis/node_modules/iobroker.vis/www/widgets
cp -rf node-red-vis/node_modules/iobroker.vis-timeandweather/widgets/* node-red-vis/node_modules/iobroker.vis/www/widgets
Осталось проверить насколько все заработает