如何连接 GX 上的 Node-RED
Node-RED 在 GX 设备本机运行。在局域网内,浏览器可直接连接;在外部网络则通过 VRM 门户访问。流程也可自行从 VRM 获取数据,并将文件写入设备的数据分区。
- 通过局域网访问编辑器地址为 https://venus.local:1881,仪表板可从编辑器中的“Dashboard 2.0”面板打开(路径为 /dashboard)。
- 通过 VRM 远程访问VRM 门户的 Venus OS Large 菜单可访问编辑器、仪表板和 Signal K;网络连接较差时运行较慢。
- VRM 数据访问令牌、VRM API 和发电量预测——Dynamic ESS 依靠这些功能运行。
- /data 分区存放流程、节点包和上下文;始终至少保留 30 MB 可用空间,低于 5% 时触发警告 #46。
仪表板:FlowFuse Dashboard 2.0
仪表板是在浏览器中显示图表、仪表和控件(如开关、滑块)的页面。Victron 推荐使用 FlowFuse Dashboard 2.0 节点包,该软件包仍在持续更新和开发。
- 安装。在编辑器中打开右侧菜单 → Manage palette → Install 选项卡,搜索并安装
@flowfuse/node-red-dashboard。GX 设备必须能够正常连接互联网。节点包安装在数据分区中,因此更新 Venus OS 后仍会保留。 - 结构。新节点会出现在左侧节点面板中。仪表板有四个层级:ui-base(基础地址,默认是
/dashboard)、ui-page(页面)、ui-group(页面中的分组)以及图表、仪表、按钮、开关等控件。 - 系统数据。将 Victron 输入节点(例如电池荷电状态)连接到控件,将仪表板上的开关连接到输出节点,例如继电器。Victron 节点面板包含哪些内容,请参阅:Victron 节点。
- Deploy 与预览。部署(Deploy)后,您可以从编辑器右侧的“Dashboard 2.0”面板打开仪表板;VRM 门户的 Venus OS Large 菜单中也会新增一个远程访问入口。
- 通过仪表板控制继电器。首先在 GX 菜单或 VictronConnect 中将继电器设为 Manual(手动)模式。若要让开关同时显示在其他位置(例如 GX 菜单)所做的更改,还需将继电器状态连接到开关的输入端。Victron wiki 中的“Relay switching”示例采用的就是这种方式。
- 数据更新频率。Victron 输入节点在数值每次变化时都会发送消息。如果未勾选“only changes”选项,还会每隔 5 秒发送当前值,因此即使数值没有变化,图表也会收到一个数据点。
- 旧版仪表板。
node-red-dashboard软件包已过时,说明书明确建议不再使用。 - 替代方案:uibuilder。
node-red-contrib-uibuilder可让您完全控制界面外观,但不提供现成控件,需要自行使用 HTML、CSS 和 JavaScript 编写界面。它更灵活,但使用难度远高于 Dashboard 2.0。
Venus OS Large 说明书不建议使用旧版 node-red-dashboard 软件包,但 node-red-contrib-victron wiki 中带仪表板的流程示例——“Monitor disk usage”(监控磁盘使用情况)、“Relay switching (from the dashboard)”(通过仪表板切换继电器)和“Threshold control”(阈值控制)——仍依赖该软件包(ui_chart、ui_switch、ui_slider 节点及旧版仪表板扩展)。这些流程需要改用 Dashboard 2.0 控件重新构建,或不遵循说明书建议,另行安装旧版软件包。
通过 VRM 远程访问
流程编辑器、Node-RED 仪表板和 Signal K 管理面板这三个界面,也可以通过 VRM 门户远程访问。
- 在 VRM 中接入系统。GX 设备必须向 VRM 门户发送数据,连接方法请参阅:VRM 监控。
- Venus OS Large 菜单。登录 VRM,选择系统,然后点击 Venus OS Large 菜单。在 GX 中启用相应功能后,编辑器和 Signal K 的入口就会出现;仪表板入口则在部署后出现。
- 登录。Node-RED 要求输入的密码与本地访问相同。从 Venus OS 3.50 起,使用的是安全配置文件中 admin 用户的密码(详情)。
- 运行可能较慢。说明书提醒,访问速度取决于网络连接质量。
- 仅通过 VRM。Victron 说明书仅介绍通过 VRM 远程访问 Node-RED 的方法,没有介绍路由器端口转发。
在流程中使用 VRM 数据
部分流程需要 GX 设备本身不具备的数据,例如光伏组件发电量预测或太阳辐照度。这些数据通过 VRM API 从 VRM 门户数据库获取。
- 访问令牌。在 VRM 门户的 Access tokens 部分添加新令牌。令牌生成后无法再次查看,请立即将其保存到密码管理器中。
- VRM API 节点。Victron VRM API node 可简化流程中 API 的使用。完整 API 说明请参阅:VRM API 文档。
- 预测数据。使用 stats 调用,并指定表中的一个属性。说明书指出,还可能有其他有用的属性。
| ID | 属性 | 数据 |
|---|---|---|
| 1220 | vrm_pv_charger_yield_fc | 太阳能充电控制器(MPPT)发电量预测 |
| 1221 | vrm_pv_inverter_yield_fc | 光伏并网逆变器发电量预测 |
| 1173 | vrm_solar_irradiance_fc | 太阳辐照度预测 |
| 1172 | vrm_solar_irradiance | 太阳辐照度 |
现成方案:Dynamic ESS——从 VRM 获取根据动态电价和光伏组件发电量预测计算出的 ESS 最优设定值。其流程也是使用 VRM API 的一个良好示例。
令牌是账户的访问密钥。请像保护密码一样保护令牌。在分享流程之前,例如发布到 Victron Community 论坛前,请检查令牌是否直接写在 function、change 或 inject 节点中。
存储空间:数据分区 /data
节点包、流程、凭据和已保存的上下文均存放在 GX 设备的数据分区中。因此,更新 Venus OS 后这些内容仍会保留,但该分区空间有限,Node-RED 和 Signal K 可能将其完全占满。
- 至少保留 30 MB 可用空间——Venus OS Large 说明书要求始终满足这一条件。
- 警告 #46。当可用空间低于 5% 时,GX 会报告 #46 Data partition full(数据分区已满)。具体数值可在 Settings → General → Modifications 菜单中查看。
- 分区已满的后果。Venus OS 无法正常运行,Node-RED 或 Signal K 无法启动——系统无法应对存储空间耗尽的情况。
- 不要在 /data 中存放大文件。请勿在此保存大型照片、视频或日志。应通过数据库、云端、MQTT 或 FTP 将这些数据存放在 GX 之外,并通过 URL 地址引用。
- 仅保留所需节点包。每个额外安装的节点包都会占用空间。不使用的节点包可通过 Manage palette 中的 remove 按钮删除。
分区已经占满时——从影响最小的措施开始,依次处理:
- Signal K 日志。如果您使用 Signal K,说明书建议先删除其日志,然后检查 Signal K → Server → Settings 中的“Keep only most recent data log files”选项是否已启用(默认启用)。
- 流程和节点包。删除流程和额外安装的节点包。如果编辑器无法启动,可使用 U 盘中的
venus-data-20-node-red-reset.tgz文件删除 /data/home/nodered/ 中的全部内容,包括所有流程和节点包,以便重新开始。请先备份:venus-data-00-backup-data-partition.tgz会将整个 /data 分区复制到 U 盘(工作原理)。 - GX 恢复出厂设置——按照 GX 设备说明书操作。缺点是必须重新配置整个设备。
也可以通过流程监测分区占用情况。Victron wiki 提供两个示例:“Monitor disk usage”(在旧版仪表板上显示图表,参见上文所述差异)和“Using MQTT to monitor disk space”。后者需要在 GX 菜单中启用 MQTT on LAN (Plaintext) 服务,且仅在调试窗口中输出剩余空间。
上下文变量与闪存
上下文变量(context、flow、global)供流程保存数值,例如计数器值或最近一次状态。默认情况下,这些变量仅保存在 GX 设备的 RAM 中,重启或断电后会丢失。
要在重启后保留这些变量,必须将其写入磁盘。在 settings-user.js 文件中配置如下(参见配置文件):
module.exports = {
contextStorage: {
default: {
module: "localfilesystem",
config: {
// 每 5 分钟写入一次
flushInterval: 300
}
}
}
}
- 不要过于频繁地写入。说明书警告,频繁写入会损耗闪存。示例每 300 s(即每 5 分钟)保存一次上下文。
- 仅保存少量数据。不要在上下文中存储大型数据或二进制数据,因为上下文也保存在容量较小的 /data 分区上。
- 修改后,请重新启动 Node-RED(重启)。
配置文件——何时需要修改
绝大多数 Node-RED 系统无需、也不应修改这些文件。Venus OS Large 的设计使您无需使用命令行。编辑这些文件需要通过 SSH 获取 root 权限(Victron 说明)。
| 文件 | 用途 | 编辑 |
|---|---|---|
/usr/ | 基础设置,首先读取 | 切勿修改——Venus OS 更新会覆盖此文件 |
/data/ | 补充第一个文件;更新后保留 | 不要修改——供 Victron 使用 |
/data/ | 您的设置:端口、安全保护、编辑器、contextStorage;更新后保留 | 可以谨慎修改——语法错误会导致 Node-RED 无法启动,更新后某些设置可能失效 |
flows.json | 所有流程(与菜单导出的内容相同) | 不要手动修改——存在损坏风险 |
flows_cred.json | 流程中加密的凭据(用户名、密码) | 不要修改——手动修改可能导致无法解密 |
.config.*.json | Node-RED 自身的设置 | 不要修改;流程导出不包含这些设置 |
lib/ | 子流程和函数库 | 高级用户可安全修改 |
- 使用同一个代码块。这些文件中的设置必须放在
module.exports = {}代码块内。多个设置(例如端口 1880 和 contextStorage)应写在同一个代码块中,并用逗号分隔。 - settings.js 会被忽略。即使您创建了 /data/home/nodered/settings.js,系统也不会读取它。只有 .node-red 目录中的 settings-user.js 会生效。
- 仪表板中的图片。要让 Node-RED 提供仪表板背景等静态文件,请在 settings-user.js 中添加
httpStatic: "/data/home/nodered/www",创建该目录,将其所有权赋予 nodered 用户(chown -R nodered:nodered),然后放入文件,例如 image.png。在仪表板中使用相对地址引用:background-image: url(/image.png);。这些文件也会占用 /data 空间,因此仅使用小文件。
修改设置后重启。最简单的方法是在 GX 菜单中进入 Venus OS Large Features → Node-RED,关闭后重新开启。命令行操作如下:
# 停止
svc -d /service/node-red-venus
# 启动
svc -u /service/node-red-venus
# 重启
svc -t /service/node-red-venus
如果修改后出现异常,请以安全模式启动 Node-RED。此模式启动时不会运行流程(安全模式)。
安全与权限
- 密码。从 Venus OS 3.50 起,访问 Node-RED 使用安全配置文件(Settings → General → Security Profile)的密码,用户名为 admin;旧版本则使用 Remote Console 的密码。详情参见:编辑器密码。
- 加密连接。编辑器通过端口 1881 使用 https。证书为自签名证书,因此浏览器会显示警告,但用户名和密码不会以明文在网络上传输。
- 仅在需要时启用端口 1880。某些节点只能通过 http 连接。为这些节点,可以在 settings-user.js 中额外启用所有网络接口上的端口 1880,然后重启 Node-RED:
这是普通的 http,不具备端口 1881 提供的加密保护,因此仅在某个节点确实需要时启用。module.exports = { // 同时启用端口 1880 上的 http uiHost: "::" } - 写入文件时出现 EACCES 错误。从 Venus OS 2.90 起,Node-RED 以 nodered 用户而非 root 身份运行,因此流程只能读写该用户有权限访问的文件,通常位于 /data/home/nodered/ 下。请使用例如
/data/home/nodered/storage.txt,而非其他路径。 - 流程中的 VRM 令牌和密码。节点作为登录信息保存的凭据会写入加密的 flows_cred.json。请勿将令牌或密码直接写入 function、change 或 inject 节点,否则它们会出现在普通的 flows.json 文件及每次导出的内容中。
导出所有流程(菜单 → Export → all flows),并保存 flows.json 文件。导出不包含 .config.*.json 文件中的 Node-RED 设置;U 盘上的 venus-data-00-backup-data-partition.tgz 文件用于完整备份 /data 分区。
适用设备
资料来源
- Venus OS Large image: Signal K and Node-RED——仪表板、配置文件、VRM API、常见问题、通过 VRM 访问、数据分区已满victronenergy.com · EN
- node-red-contrib-victron——Example Flows(通过仪表板控制继电器、磁盘占用、阈值控制)github.com · EN
- VRM API——文档victronenergy.com · EN
- FlowFuse Dashboard 2.0——Getting started(安装、/dashboard 路径、构建)dashboard.flowfuse.com · EN

