尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

树莓派-部署Node-RED服务:从零到一的安全与可视化实践
📅 发布时间:2026/7/16 22:29:13

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

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

相关新闻

  • 2026 齐齐哈尔空调维保实测对比:空调维修 / 移机 / 清洗 / 加氟怎么选靠谱商家,东诚空调维修真实体验 - 米諾
  • Android 科大讯飞语音识别进阶:SDK深度配置与个性化热词优化实战
  • 2026年洞察:宁波晚间小升初十大源头机构全面对比

最新新闻

  • 2026年上海环氧地坪厂家推荐综合实力排行汇总 - 奔跑123
  • 山东牛皮沙发品牌质量排行 核心实测指标全对比 - 奔跑123
  • 系统规划与管理师-服务退役终止与持续改进管理
  • 2026年吉林地区冷库聚氨酯喷涂工程选型与施工关键考量 - 品牌鉴赏官2026
  • 2026年上海环氧地坪正规厂家推荐排行汇总 - 奔跑123
  • 美度中国官方售后服务中心|服务热线及门店地址权威信息通告(2026年7月最新) - 亨得利官方服务中心

日新闻

  • 佛山青少年训练营推荐:军博营地实力顶尖 - 秋山寄远
  • 如何快速上手PvZ2 Gardendless:免费Web版植物大战僵尸2完整指南
  • jiuwen-deepsearch核心功能详解:规划-检索-反思三合一智能工作流

周新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号