当前位置: 首页 > news >正文

树莓派-部署Node-RED服务:从零到一的安全与可视化实践

1. 树莓派与Node-RED的完美组合

树莓派这款信用卡大小的微型计算机,凭借其低廉的价格和强大的扩展能力,已经成为物联网开发者的首选硬件平台。而Node-RED作为一款基于流程的可视化编程工具,能够轻松连接各种硬件设备、API和在线服务。两者的结合,为物联网项目开发提供了极大的便利。

我最初接触这个组合是在一个智能家居项目中,当时需要快速搭建一个环境监测系统。传统开发方式需要编写大量代码,而使用树莓派+Node-RED的方案,仅用几个小时就完成了从传感器数据采集到Web界面展示的完整流程。

树莓派上运行Node-RED的优势非常明显:

  • 低功耗:7W左右的功耗可以24小时不间断运行
  • 丰富的接口:GPIO、I2C、SPI等接口可以直接连接各种传感器
  • 可视化编程:通过拖拽节点就能完成复杂的数据处理流程
  • 庞大的生态:有超过3000个社区贡献的节点可以扩展功能

2. 安装Node-RED的两种方法

2.1 使用官方脚本安装(推荐)

这是最简单也是最推荐的方法。Node-RED官方提供了一个一键安装脚本,可以自动完成所有依赖的安装和配置。

打开树莓派的终端,执行以下命令:

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

这个脚本会:

  1. 检查并安装合适版本的Node.js(目前默认安装Node.js 20 LTS)
  2. 移除旧版Node-RED(如果已安装)
  3. 安装最新版Node-RED核心程序
  4. 安装树莓派专用节点(可选)
  5. 配置为系统服务并创建管理命令

安装过程中会询问是否安装树莓派专用节点,建议选择"Y"。这些节点包括:

  • node-red-node-pi-gpio:GPIO控制
  • node-red-node-random:随机数生成
  • node-red-node-ping:网络ping测试
  • node-red-contrib-play-audio:音频播放

2.2 通过apt包管理器安装

如果你更喜欢使用系统包管理器,也可以使用apt安装:

sudo apt update sudo apt install nodered

不过这种方式有几点需要注意:

  1. 安装的Node-RED版本可能不是最新的
  2. 需要手动安装Node.js和npm
  3. 缺少一些树莓派专用节点

实测下来,使用官方脚本安装更加省心,特别是对于新手来说。我曾经尝试过apt安装方式,遇到了npm包缺失的问题,花了半天时间才解决。

3. 启动与管理Node-RED服务

安装完成后,可以使用以下命令管理Node-RED服务:

# 启动服务并查看日志 node-red-start # 停止服务 node-red-stop # 重启服务 node-red-restart # 查看日志 node-red-log

为了让Node-RED在系统启动时自动运行,需要启用服务:

sudo systemctl enable nodered.service

这个设置非常实用,特别是当树莓派作为长期运行的物联网网关时。记得我第一次部署时忘了设置自动启动,断电重启后服务没有自动恢复,排查了半天才发现问题。

服务启动后,可以通过浏览器访问Node-RED的编辑器界面:

http://<树莓派IP地址>:1880

如果是在树莓派本机访问,可以使用:

http://localhost:1880

4. 安全配置:保护你的Node-RED

4.1 设置登录认证

默认情况下,任何知道IP地址的人都能访问你的Node-RED编辑器,这显然不安全。我们需要设置用户名和密码认证。

首先,使用以下命令生成密码哈希:

node-red admin hash-pw

输入你想设置的密码后,会得到类似这样的哈希字符串:

$2b$08$7mwwlnt666Up9Ez1kqwY2O...

然后编辑Node-RED的配置文件(通常位于~/.node-red/settings.js),找到adminAuth部分,取消注释并修改:

adminAuth: { type: "credentials", users: [{ username: "admin", password: "粘贴你的哈希字符串", permissions: "*" }] }

保存后重启Node-RED服务:

node-red-restart

现在访问编辑器时就需要输入用户名和密码了。我在实际项目中遇到过因为没有设置密码而导致的安全事件,有人意外访问到了测试环境并修改了流程,从那以后我都会第一时间配置认证。

4.2 修改默认端口

1880是一个众所周知的Node-RED默认端口,为了增加安全性,可以修改为其他端口。在settings.js中找到以下配置:

// 修改为其他端口号,如2880 uiPort: 2880,

4.3 启用HTTPS

对于生产环境,建议启用HTTPS加密通信。首先需要准备SSL证书,然后在settings.js中配置:

https: { key: fs.readFileSync('privkey.pem'), cert: fs.readFileSync('fullchain.pem') }

5. 构建可视化仪表盘

5.1 安装Dashboard节点

Node-RED默认没有Web UI界面,但可以通过安装dashboard节点快速创建。在编辑器界面:

  1. 点击右上角菜单 → "节点管理"
  2. 选择"控制面板" → "安装"
  3. 搜索"node-red-dashboard"并安装

安装完成后,你会在左侧节点面板看到一个新的"dashboard"分类。

5.2 创建第一个仪表盘

让我们创建一个简单的温度监控面板:

  1. 从"dashboard"分类拖拽一个"gauge"节点到流程中

  2. 双击节点进行配置:

    • Group:新建一个组,比如"环境监测"
    • Label:设置为"温度"
    • Units:设置为"°C"
    • Range:设置合适的范围,如0-100
  3. 添加一个"inject"节点作为数据源,配置为定期注入随机温度值

  4. 将两个节点连接起来

  5. 点击"部署"按钮

现在可以通过以下URL访问仪表盘:

http://<树莓派IP>:1880/ui

5.3 高级布局技巧

Dashboard支持多种布局方式,可以创建复杂的监控界面:

  • 标签页:使用"tab"节点组织不同功能模块
  • 分组:使用"group"节点将相关控件放在一起
  • 响应式布局:通过调整UI组件的宽度适应不同设备

我曾经为一个农业物联网项目设计过dashboard,包含了土壤湿度、气温、光照等多个指标的实时图表和历史数据曲线,全部通过拖拽节点完成,几乎没有写一行代码。

6. 实际应用案例:智能家居监控系统

6.1 硬件连接

将以下传感器连接到树莓派:

  • DHT22温湿度传感器 → GPIO4
  • BH1750光照传感器 → I2C接口
  • 继电器模块 → GPIO17控制灯光

6.2 创建数据流

  1. 使用"rpi-gpio in"节点读取传感器数据
  2. 添加"function"节点处理原始数据:
// 将DHT22的原始数据转换为JSON格式 msg.payload = { temperature: msg.payload, humidity: msg.humidity }; return msg;
  1. 使用"dashboard"节点创建显示控件
  2. 添加"rpi-gpio out"节点控制继电器

6.3 添加报警功能

当温度超过阈值时发送通知:

  1. 添加"switch"节点判断温度值
  2. 连接"notification"节点显示警报
  3. 添加"email"节点发送邮件提醒
if(msg.payload > 30) { msg.payload = "高温警报!当前温度:" + msg.payload; return msg; }

7. 性能优化与问题排查

7.1 内存管理

树莓派内存有限,可以通过以下方式优化:

# 启动时限制内存使用 node-red-pi --max-old-space-size=256

7.2 常见问题解决

问题1:安装节点时卡住

  • 解决方案:换用国内npm镜像
npm config set registry https://registry.npmmirror.com

问题2:GPIO节点不可用

  • 解决方案:确保用户有GPIO访问权限
sudo usermod -a -G gpio pi

问题3:Dashboard加载慢

  • 解决方案:减少单个页面的控件数量,使用分页

8. 扩展应用:与其他系统集成

Node-RED的强大之处在于可以轻松集成各种服务:

  • MQTT:使用node-red-contrib-aedes节点创建MQTT代理
  • 数据库:node-red-node-mysql支持MySQL操作
  • 云服务:node-red-contrib-aws支持AWS服务
  • Web API:使用"http request"节点调用REST API

我曾经用Node-RED搭建过一个智能灌溉系统,通过MQTT接收传感器数据,将历史数据存入InfluxDB,并通过Telegram节点发送浇水提醒,整个系统搭建只用了不到一天时间。

9. 备份与迁移

定期备份你的Node-RED流程非常重要:

  1. 导出流程:在编辑器中选择"导出" → "当前流程"
  2. 备份配置文件:~/.node-red/settings.js和flows.json
  3. 备份已安装节点列表:
npm list -g --depth=0 > nodered_modules.txt

迁移到新设备时,只需:

  1. 安装相同版本的Node-RED
  2. 恢复配置文件和流程
  3. 根据备份的模块列表重新安装节点

10. 进阶学习资源

想要更深入学习Node-RED,可以参考以下资源:

  • 官方文档:https://nodered.org/docs/
  • 节点库:https://flows.nodered.org/
  • 社区论坛:https://discourse.nodered.org/
  • 实战项目:https://github.com/node-red/example-flows

记得刚开始使用时,我花了大量时间研究各种节点的组合方式,后来发现官方示例库中有很多现成的解决方案,可以节省不少时间。

http://www.jsqmd.com/news/1202765/

相关文章:

  • Mochi Diffusion实战指南:在Mac上构建本地化AI图像生成工作流
  • 代码生成混合工作流:Flash与V4 Pro分工降本62%实战指南
  • 2026年 超声波发生器/电源品牌推荐:高频/智能/多频/大功率超声设备实力厂家解析 - 甄选服务推荐
  • cuSignal波束成形技术:相控阵雷达信号处理的GPU加速方法
  • 小米换电池品牌哪家品质稳:质酷低衰耐用 - MXyuyu
  • 本体语义:企业AI从“答得对“走向“懂业务“的关键一跃
  • 江诗丹顿中国官方售后服务中心|电话和完整地址权威信息通告(2026年7月更新) - 江诗丹顿服务中心
  • 多层PCB板设计:层叠原理与工程实践
  • 真力时中国官方售后服务中心|详细地址与客服电话权威信息公告(2026年7月更新) - 亨得利官方服务中心
  • Voyeur.js部署与打包:如何将这个1.2kb库集成到你的项目中
  • 2026年洞察:宁波晚间小升初十大源头机构全面对比
  • Redocusaurus配置完全指南:掌握所有主题和插件选项
  • 从理论到实践:基于Simulink的双闭环直流调速系统建模与抗扰仿真分析
  • 2026一人公司实体获客商机洞察:AI创富新思维3天私房课
  • LSTM模型评估全流程:从基础指标到时间序列特异性分析
  • Vue.js和Go实战教程:构建实时数据生成与统计系统
  • 积家中国官方售后服务中心|服务热线及门店官方地址权威信息通知(2026年7月更新) - 积家官方售后服务中心
  • 双重权威认证:智推时代技术加持,千眼智推成家居行业数字化标杆服务商 - 速递信息
  • 2026年最新教程:头像怎么做成拼豆?亲测好用的免费方法 - 省事研究所
  • 玩转Python字符串:从入门到精通
  • 技术博客互动新思路:用投票功能精准洞察读者需求
  • 2026年07月:工程防护与环保覆盖材料行业制造厂家实力观察 - 甄选服务推荐
  • 电子设计实战:基于74HC595与三八译码器的16*16LED点阵屏驱动电路深度解析
  • 黑马程序员软件测试实战:从理论到项目通关的完整路径
  • 2026澳洲电商集运推荐 跨境商家靠谱物流服务商 - 资讯速览
  • 别踩 2026年录音怎么转换成文字的常见误区:亲测总结的实操经验
  • complexPyTorch开发者指南:如何扩展自定义复数层与激活函数
  • 亲身探访重庆帝舵官方售后服务中心|地址及服务热线(2026年7月最新) - 帝舵中国官方服务中心
  • DNABERT-2基因组分析终极指南:如何利用深度学习高效理解DNA序列
  • 【工程师学算法】工程常用算法(二)—— 卡尔曼滤波(Kalman Filter)实战:从传感器融合到状态估计