基于Node-RED的边缘网关¶
Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.
本项目是一套基于Quectel Pi H1智能主控板构建的Node-RED边缘网关。
本项目以Quectel Pi H1智能主控板作为边缘侧计算与协议汇聚节点,在本地局域网内完成端侧设备接入、数据采集汇聚、规则编排与可视化展示,并将数据存储至本地数据库,形成“采集—处理—存储—展示”的闭环架构,适用于对实时性、可靠性与本地化部署要求较高的工业现场和边缘计算场景。
开发资源汇总¶
开发配件清单¶
备注
开发配件只是作为参考,不同的开发环境可能会有所差异,比如通过SSH远程连接进行开发,可以不使用USB扩展板扩充USB接口,显示屏也可以根据需要进行替换。
配件名称 |
数量 |
规格参数 |
|---|---|---|
Quectel Pi H1智能主控板 |
2 |
|
Environment Sensor HAT |
1 |
|
USB摄像头模组 |
1 |
|
USB-C电源适配器 |
2 |
|
CPU散热风扇(可选) |
1 |
|
Micro HDMI线 |
2 |
HDMI 2.0;线长:1 米;Micro-HDMI转标准HDMI连接线或Micro-HDMI线(Type-D公对Type-A公) |
网线 |
2 |
线长:1 米;传输速率:千兆 |
显示屏 |
1 |
24英寸HDMI显示器 |
配件实物参考¶
快速上手¶
开发准备¶
本项目采用双板协同方案:主控板A(H1-A)作为边缘网关节点,负责数据汇总、Node-RED编排与大屏展示;主控板B(H1-B)作为现场采集节点,搭载环境传感器与摄像头进行数据采集。
Quectel Pi H1出厂预装Debian 13操作系统,通常无需重新烧录系统镜像。按照以下步骤操作即可:
硬件连接¶
网关端(H1-A)¶
按照以下步骤完成所有硬件连接(步骤编号与接口示意图中的标注一致):
散热风扇连接:先将散热风扇的排线插入智能主控板的 FAN 插槽中,再将散热器两端固定在主控板预留插孔中。
显示连接:将Micro HDMI线的一端连接到智能主控板的Micro HDMI接口,另一端连接到显示器的HDMI接口。
网络连接:确保路由器已接入互联网。将网线的一端连接到智能主控板的千兆以太网端口,另一端连接到路由器的以太网端口。
输入设备连接:将USB键盘、鼠标和OV5693摄像头模块等输入设备连接到智能主控板的USB接口。如果使用无线输入设备,将无线接收器连接到扩展坞的USB接口即可。
供电连接:将电源适配器接入电源,电源适配器的USB-C端连接到智能主控板的电源输入接口(建议连接好所有其他外设后再进行供电连接)。
采集端(H1-B)¶
网络连接
将网线一端接入智能主控板的千兆网口,另一端接入路由器的网口。
备注
若采用Wi-Fi无线连接,请确保采集端(H1-B)与网关端(H1-A)接入同一局域网(处于同一网段)。
跳线帽连接
确认智能主控板左上角标有 AUTO_POWER_ON 丝印的排针已用跳线帽短接。
环境传感器扩展板连接
将环境传感器扩展板接到智能主控板的40-Pin排针上。
备注
注意传感器引脚对齐与朝向:将扩展板的Pin 1(通常标有圆点或方形焊盘)对准主控板40-Pin的Pin 1位置,扩展板主体朝向主板内侧平稳下压插紧,切勿错位或反插。
摄像头连接
将USB摄像头接入智能主控板的USB-A接口。
供电连接
将电源适配器接入电源,电源适配器的USB-C端接入智能主控板的电源口(标注为 POWER IN)。
连接完成参考
项目实现¶
备注
本节按“网关端/采集端”拆分,便于部署。
网关端(H1-A)¶
更新软件源
sudo apt update
安装Node-RED
sudo apt install build-essential git curl
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
设置开机自启:
sudo systemctl enable --now nodered.service
sudo systemctl status nodered.service
要禁用开机自启服务,请运行以下命令:
sudo systemctl disable nodered.service
sudo systemctl restart nodered
安装Mosquitto和SQLite3
sudo apt install -y sqlite3 mosquitto mosquitto-clients
设置开机自启:
sudo systemctl enable --now mosquitto
创建并编辑Mosquitto配置文件:
sudo nano /etc/mosquitto/conf.d/edge-listener.conf
写入以下配置,然后依次按 Ctrl+O、Enter、Ctrl+X 保存并退出:
listener 1883 0.0.0.0
allow_anonymous true
重启服务:
sudo systemctl restart mosquitto
初始化SQLite数据库
Node-RED的SQLite节点使用的数据库路径为(路径中的用户名 pi 请根据实际情况替换):/home/pi/edge_db/edge.db。
先创建目录并初始化表结构:
mkdir -p ~/edge_db
sqlite3 ~/edge_db/edge.db << 'SQL'
CREATE TABLE IF NOT EXISTS telemetry (
id INTEGER PRIMARY KEY AUTOINCREMENT,
deviceId TEXT NOT NULL,
ts INTEGER,
gatewayTs INTEGER,
temperature REAL,
humidity REAL,
pressure REAL
);
CREATE INDEX IF NOT EXISTS idx_telemetry_device_ts ON telemetry(deviceId, ts);
SQL
备注
Node-RED写入数据库的字段为 (deviceId, ts, gatewayTs, temperature, humidity, pressure),并通过解析主题 edge/v1/<deviceId>/telemetry 获取 deviceId。
访问Dashboard
如果在智能主控板的桌面上使用浏览器,可直接打开 http://localhost:1880。
从另一台设备访问时,使用智能主控板的主机名或IP地址(在智能主控板上运行 hostname -I 可查看IP地址),访问地址:http://<网关端IP>:1880。
进入后的网页界面如下图:
安装必要节点:
进入编辑器后,依次点击右上角菜单、Settings、Palette、Install 进入节点安装界面,搜索并安装以下节点:
node-red-node-sqlite
node-red-dashboard
导入Node-RED流程
1)将 flow.json 文件放置在 .node-red/lib/flows/ 下。
mkdir -p ~/.node-red/lib/flows
cd ~/.node-red/lib/flows/
2)在编辑器界面依次点击右上角菜单、Import、Local,选择 flow.json 后点击 Import。
3)将流程导入后点击 Deploy 使流程生效。
采集端(H1-B)¶
采集端使用Python、paho-mqtt和smbus2实现,并调用mjpg-streamer输出MJPEG视频流:
安装基础组件
sudo apt update
sudo apt install -y git python3-venv v4l-utils cmake build-essential libjpeg-dev
配置40-Pin接口
使能40-Pin接口的I2C:在终端输入 sudo qpi-config 40pin set,然后重启智能主控板使配置生效。
安装mjpg-streamer(用于输出MJPEG视频流)
拉取源码并编译:
cd ~
git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
make && sudo make install
获取代码和创建Python虚拟环境
将 代码 文件夹 edge_h1_sensor 放置于用户目录 /home/pi 下,然后执行以下命令:
cd ~/edge_h1_sensor
python3 -m venv venv
source venv/bin/activate
更新pip并安装OpenCV与paho-mqtt
pip install --upgrade pip opencv-python paho-mqtt
pip install -U smbus2
启动程序
回到项目代码目录,激活Python虚拟环境并运行程序:
cd ~/edge_h1_sensor
source venv/bin/activate
# 示例程序代码需根据实际IP地址修改
sudo -E ~/edge_h1_sensor/venv/bin/python h1_sensor_agent.py
应用演示¶
Node-RED界面¶
Node-RED流编辑器(Flow Editor):http://<网关端IP>:1880 或 * http://localhost:1880* 。
边缘网关可视化看板(Dashboard):http://<网关端IP>:1880/ui 或 http://localhost:1880/ui 。
数据库数据查询示例¶
网关端将遥测数据写入SQLite数据库,默认配置如下:
数据库文件:/home/pi/edge_db/edge.db。
数据表:telemetry。
字段:deviceId, ts, gatewayTs, temperature, humidity, pressure。
进入数据库¶
sqlite3 /home/pi/edge_db/edge.db
查看表与表结构¶
.tables
.schema telemetry
查看最新数据¶
将 h1-sensecam-001 替换为实际的设备ID:
SELECT deviceId, ts, gatewayTs, temperature, humidity, pressure
FROM telemetry
WHERE deviceId = 'h1-sensecam-001'
ORDER BY ts DESC
LIMIT 20;
将时间戳转换为可读时间¶
ts 单位:毫秒。
SELECT
deviceId,
datetime(ts/1000, 'unixepoch', 'localtime') AS time_local,
temperature, humidity, pressure
FROM telemetry
WHERE deviceId = 'h1-sensecam-001'
ORDER BY ts DESC
LIMIT 20;
技术支持与贡献¶
如在使用过程中遇到问题,欢迎在 移远通信官方论坛 提交技术咨询,我们的技术支持团队将及时为您解答。