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

发布时间:2026/9/22 10:52:02

树莓派-部署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)这个脚本会检查并安装合适版本的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记得刚开始使用时我花了大量时间研究各种节点的组合方式后来发现官方示例库中有很多现成的解决方案可以节省不少时间。

相关新闻

ERA5气象再分析数据:从手动配置到Python批量下载的完整指南

ERA5气象再分析数据:从手动配置到Python批量下载的完整指南

2026/9/2 16:07:51

1. ERA5气象数据简介与核心价值ERA5是欧洲中期天气预报中心(ECMWF)发布的第五代全球大气再分析数据集,堪称当前气象研究领域的"黄金标准"。我最初接触ERA5是在2018年做台风路径预测项目时,当时就被它0.250.25的高空间分…

3步搞定Figma设计对接:让AI编码助手读懂你的设计意图

3步搞定Figma设计对接:让AI编码助手读懂你的设计意图

2026/9/2 9:37:48

3步搞定Figma设计对接:让AI编码助手读懂你的设计意图 【免费下载链接】Figma-Context-MCP MCP server to provide Figma layout information to AI coding agents like Cursor 项目地址: https://gitcode.com/gh_mirrors/fi/Figma-Context-MCP 你是否曾在开发…

高斯泼溅模型UE5插件深度实战:从零构建实时3D场景渲染系统

高斯泼溅模型UE5插件深度实战:从零构建实时3D场景渲染系统

2026/9/6 13:30:36

高斯泼溅模型UE5插件深度实战:从零构建实时3D场景渲染系统 【免费下载链接】XScene-UEPlugin A Unreal Engine 5 (UE5) based plugin aiming to provide real-time visulization, management, editing, and scalable hybrid rendering of Guassian Splatting model.…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/21 18:38:46

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/21 18:41:09

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/21 18:36:40

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/21 18:37:26

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/21 18:40:29

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/21 18:36:17

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/22 0:19:28

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/21 23:38:13

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/22 0:48:53

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…