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)这个脚本会检查并安装合适版本的Node.js目前默认安装Node.js 20 LTS移除旧版Node-RED如果已安装安装最新版Node-RED核心程序安装树莓派专用节点可选配置为系统服务并创建管理命令安装过程中会询问是否安装树莓派专用节点建议选择Y。这些节点包括node-red-node-pi-gpioGPIO控制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不过这种方式有几点需要注意安装的Node-RED版本可能不是最新的需要手动安装Node.js和npm缺少一些树莓派专用节点实测下来使用官方脚本安装更加省心特别是对于新手来说。我曾经尝试过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:18804. 安全配置保护你的Node-RED4.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节点快速创建。在编辑器界面点击右上角菜单 → 节点管理选择控制面板 → 安装搜索node-red-dashboard并安装安装完成后你会在左侧节点面板看到一个新的dashboard分类。5.2 创建第一个仪表盘让我们创建一个简单的温度监控面板从dashboard分类拖拽一个gauge节点到流程中双击节点进行配置Group新建一个组比如环境监测Label设置为温度Units设置为°CRange设置合适的范围如0-100添加一个inject节点作为数据源配置为定期注入随机温度值将两个节点连接起来点击部署按钮现在可以通过以下URL访问仪表盘http://树莓派IP:1880/ui5.3 高级布局技巧Dashboard支持多种布局方式可以创建复杂的监控界面标签页使用tab节点组织不同功能模块分组使用group节点将相关控件放在一起响应式布局通过调整UI组件的宽度适应不同设备我曾经为一个农业物联网项目设计过dashboard包含了土壤湿度、气温、光照等多个指标的实时图表和历史数据曲线全部通过拖拽节点完成几乎没有写一行代码。6. 实际应用案例智能家居监控系统6.1 硬件连接将以下传感器连接到树莓派DHT22温湿度传感器 → GPIO4BH1750光照传感器 → I2C接口继电器模块 → GPIO17控制灯光6.2 创建数据流使用rpi-gpio in节点读取传感器数据添加function节点处理原始数据// 将DHT22的原始数据转换为JSON格式 msg.payload { temperature: msg.payload, humidity: msg.humidity }; return msg;使用dashboard节点创建显示控件添加rpi-gpio out节点控制继电器6.3 添加报警功能当温度超过阈值时发送通知添加switch节点判断温度值连接notification节点显示警报添加email节点发送邮件提醒if(msg.payload 30) { msg.payload 高温警报当前温度 msg.payload; return msg; }7. 性能优化与问题排查7.1 内存管理树莓派内存有限可以通过以下方式优化# 启动时限制内存使用 node-red-pi --max-old-space-size2567.2 常见问题解决问题1安装节点时卡住解决方案换用国内npm镜像npm config set registry https://registry.npmmirror.com问题2GPIO节点不可用解决方案确保用户有GPIO访问权限sudo usermod -a -G gpio pi问题3Dashboard加载慢解决方案减少单个页面的控件数量使用分页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流程非常重要导出流程在编辑器中选择导出 → 当前流程备份配置文件~/.node-red/settings.js和flows.json备份已安装节点列表npm list -g --depth0 nodered_modules.txt迁移到新设备时只需安装相同版本的Node-RED恢复配置文件和流程根据备份的模块列表重新安装节点10. 进阶学习资源想要更深入学习Node-RED可以参考以下资源官方文档https://nodered.org/docs/节点库https://flows.nodered.org/社区论坛https://discourse.nodered.org/实战项目https://github.com/node-red/example-flows记得刚开始使用时我花了大量时间研究各种节点的组合方式后来发现官方示例库中有很多现成的解决方案可以节省不少时间。
树莓派-部署Node-RED服务:从零到一的安全与可视化实践
发布时间:2026/7/16 22:10:51
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)这个脚本会检查并安装合适版本的Node.js目前默认安装Node.js 20 LTS移除旧版Node-RED如果已安装安装最新版Node-RED核心程序安装树莓派专用节点可选配置为系统服务并创建管理命令安装过程中会询问是否安装树莓派专用节点建议选择Y。这些节点包括node-red-node-pi-gpioGPIO控制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不过这种方式有几点需要注意安装的Node-RED版本可能不是最新的需要手动安装Node.js和npm缺少一些树莓派专用节点实测下来使用官方脚本安装更加省心特别是对于新手来说。我曾经尝试过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:18804. 安全配置保护你的Node-RED4.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节点快速创建。在编辑器界面点击右上角菜单 → 节点管理选择控制面板 → 安装搜索node-red-dashboard并安装安装完成后你会在左侧节点面板看到一个新的dashboard分类。5.2 创建第一个仪表盘让我们创建一个简单的温度监控面板从dashboard分类拖拽一个gauge节点到流程中双击节点进行配置Group新建一个组比如环境监测Label设置为温度Units设置为°CRange设置合适的范围如0-100添加一个inject节点作为数据源配置为定期注入随机温度值将两个节点连接起来点击部署按钮现在可以通过以下URL访问仪表盘http://树莓派IP:1880/ui5.3 高级布局技巧Dashboard支持多种布局方式可以创建复杂的监控界面标签页使用tab节点组织不同功能模块分组使用group节点将相关控件放在一起响应式布局通过调整UI组件的宽度适应不同设备我曾经为一个农业物联网项目设计过dashboard包含了土壤湿度、气温、光照等多个指标的实时图表和历史数据曲线全部通过拖拽节点完成几乎没有写一行代码。6. 实际应用案例智能家居监控系统6.1 硬件连接将以下传感器连接到树莓派DHT22温湿度传感器 → GPIO4BH1750光照传感器 → I2C接口继电器模块 → GPIO17控制灯光6.2 创建数据流使用rpi-gpio in节点读取传感器数据添加function节点处理原始数据// 将DHT22的原始数据转换为JSON格式 msg.payload { temperature: msg.payload, humidity: msg.humidity }; return msg;使用dashboard节点创建显示控件添加rpi-gpio out节点控制继电器6.3 添加报警功能当温度超过阈值时发送通知添加switch节点判断温度值连接notification节点显示警报添加email节点发送邮件提醒if(msg.payload 30) { msg.payload 高温警报当前温度 msg.payload; return msg; }7. 性能优化与问题排查7.1 内存管理树莓派内存有限可以通过以下方式优化# 启动时限制内存使用 node-red-pi --max-old-space-size2567.2 常见问题解决问题1安装节点时卡住解决方案换用国内npm镜像npm config set registry https://registry.npmmirror.com问题2GPIO节点不可用解决方案确保用户有GPIO访问权限sudo usermod -a -G gpio pi问题3Dashboard加载慢解决方案减少单个页面的控件数量使用分页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流程非常重要导出流程在编辑器中选择导出 → 当前流程备份配置文件~/.node-red/settings.js和flows.json备份已安装节点列表npm list -g --depth0 nodered_modules.txt迁移到新设备时只需安装相同版本的Node-RED恢复配置文件和流程根据备份的模块列表重新安装节点10. 进阶学习资源想要更深入学习Node-RED可以参考以下资源官方文档https://nodered.org/docs/节点库https://flows.nodered.org/社区论坛https://discourse.nodered.org/实战项目https://github.com/node-red/example-flows记得刚开始使用时我花了大量时间研究各种节点的组合方式后来发现官方示例库中有很多现成的解决方案可以节省不少时间。