4. 仪表盘基础

仪表盘(Dashboard)是Node-RED物联网应用中最直观的交互层。本章将系统讲解Dashboard节点库的安装流程、布局结构的设计原理,以及如何通过拖拽式操作快速添加和配置UI组件,为后续构建完整的物联网监控界面打下坚实基础。

4.1 Dashboard节点库的安装

Dashboard节点库并非Node-RED的默认内置节点,需要通过“节点管理”功能手动安装。安装完成后,你将在左侧节点面板中看到一组以“dashboard”为分类的UI节点。

4.1.1 安装步骤

  1. 打开节点管理面板:点击Node-RED编辑器右上角的“三横线”菜单,选择“节点管理”。
  2. 切换到“安装”标签页:在节点管理对话框中,点击“安装”选项卡。
  3. 搜索Dashboard节点库:在搜索框中输入 node-red-dashboard。
  4. 点击安装:找到 node-red-dashboard 节点库,点击右侧的“安装”按钮。
  5. 等待安装完成:Node-RED会自动从npm仓库下载并安装依赖,安装成功后节点面板会刷新。
安装验证:安装成功后,左侧节点面板会出现一个名为“dashboard”的节点分类,其中包含 ui_button、ui_text、ui_gauge、ui_chart 等常用节点。如果未出现,请尝试刷新浏览器页面或重启Node-RED服务。

4.1.2 版本与兼容性

项目 说明
当前稳定版本 3.x(截至本课程编写时)
Node-RED最低版本要求 2.0.0 及以上
Node.js最低版本要求 12.x 及以上
安装命令(备用) npm install node-red-dashboard(在Node-RED用户目录下执行)

4.2 Dashboard布局结构

Dashboard的布局采用“站点 → 标签页 → 分组 → 组件”的四层树形结构。理解这一层级关系是高效设计仪表盘界面的前提。

4.2.1 布局层级关系

Dashboard布局层级结构图 Dashboard 布局层级结构 站点 (Site) 标签页 (Tab) 分组 (Group) 组件 (Widget) 层级说明 • 站点:仪表盘根配置 • 标签页:导航切换单元 • 分组:组件容器 • 组件:具体UI元素 配置入口: 双击任意dashboard节点 → 编辑 → 新建/选择 站点/标签页/分组

4.2.2 各层级配置要点

层级 配置位置 关键属性 作用
站点 Dashboard 设置页面 站点名称、路径、主题色 定义仪表盘全局样式与访问路径
标签页 节点编辑 → 添加新标签页 标签名称、图标、顺序 实现多页面导航,组织功能模块
分组 节点编辑 → 添加新分组 分组名称、宽度、布局方向 将相关组件放在同一卡片区域
组件 节点编辑 → 选择分组 标签、数据源、样式 具体UI控件,如按钮、图表、仪表

4.3 UI组件的添加与配置

Dashboard提供了丰富的UI组件库,覆盖数据展示、控制输入、图表可视化等场景。添加组件只需从节点面板拖拽到编辑区,然后配置其属性即可。

4.3.1 常用UI组件一览

组件类型 节点名称 典型用途 输出/输入
按钮 ui_button 触发动作、发送指令 输出 msg.payload
文本 ui_text 显示传感器数值、状态信息 输入 msg.payload
仪表盘 ui_gauge 模拟指针仪表显示 输入数值
图表 ui_chart 实时数据曲线、柱状图 输入时间序列数据
滑块 ui_slider 调节阈值、连续控制 输出/输入数值
开关 ui_switch 开关量控制 输出 true/false
下拉选择 ui_dropdown 选项切换 输出选中值
表单 ui_form 提交结构化数据 输出JSON对象

4.3.2 添加组件的标准流程

  1. 拖拽节点:从左侧“dashboard”分类中拖出一个UI组件节点(如 ui_text)到编辑区。
  2. 双击编辑:双击该节点,打开属性编辑面板。
  3. 配置分组归属:在“Group”字段中,点击右侧的“铅笔”图标,选择或新建一个分组。
  4. 设置组件属性:根据组件类型填写标签、单位、取值范围、样式等参数。
  5. 连接数据流:将上游节点(如MQTT输入、函数节点)的输出连接到UI组件的输入。
  6. 部署并查看:点击右上角“部署”按钮,然后通过浏览器访问 http://localhost:1880/ui 查看仪表盘效果。
关键提示:每个UI组件节点必须归属于一个分组,而分组必须归属于一个标签页。如果未正确配置层级归属,部署后仪表盘将无法显示该组件。建议在添加组件前,先规划好标签页和分组的组织结构。

4.3.3 组件配置示例:温度显示仪表

以下是一个典型的温度传感器数据显示配置流程,展示从数据输入到仪表盘显示的全链路。

温度显示仪表配置流程 温度显示仪表配置流程 MQTT输入节点 接收温度数据 函数节点 格式转换/单位换算 ui_text 节点 显示温度数值 ui_gauge 节点 仪表盘显示 配置要点 1. ui_text 节点:Group 选择“温度监控”分组,Label 设为“当前温度”,Format 设为 {{msg.payload}} °C 2. ui_gauge 节点:Group 选择同一分组,Range 设为 min:0, max:100,Unit 设为 °C

4.4 布局与组件的实战技巧

常见陷阱:在配置分组宽度时,Dashboard采用12列栅格系统。如果组件宽度之和超过12,组件会自动换行,可能导致布局错乱。建议每个分组的总宽度不超过12,例如:一个宽度为6的图表 + 两个宽度为3的仪表。

4.4.1 分组宽度分配建议

场景 推荐宽度 说明
全宽标题/大图表 12 占满整行,适合主标题或全宽折线图
双栏布局 6 + 6 左右对称,适合对比显示
三栏布局 4 + 4 + 4 等宽三列,适合仪表盘或状态卡片
主次布局 8 + 4 主区域显示图表,侧栏显示控制组件

4.4.2 组件数据绑定方式

UI组件通过 msg.payload 接收或发送数据。对于不同类型的组件,数据格式要求如下:

  • 数值型组件(ui_gauge、ui_chart):msg.payload 必须为数字,如 25.6。
  • 文本型组件(ui_text):msg.payload 可以是字符串或数字,通过Format模板格式化显示。
  • 开关/按钮型组件(ui_switch、ui_button):点击时输出 msg.payload 为 true 或 false(开关),或自定义值(按钮)。
  • 图表型组件(ui_chart):支持时间序列数据,msg.payload 可以是单个数值或数组。
进阶技巧:使用 msg.topic 可以为图表组件区分多条数据曲线。例如,将温度数据发送到 msg.topic = "temperature",湿度数据发送到 msg.topic = "humidity",图表会自动绘制两条不同颜色的曲线。

4.5 本章小结