一、什么是 ProtoForge?
ProtoForge 是一个面向 IoT 开发者的
全栈式协议仿真与测试平台。
在实际的工业互联网(IIoT)或视频监控系统开发中,调试上位机或数据采集系统时,往往受限于硬件设备(PLC、传感器、摄像头)的缺失。ProtoForge 解决了这一痛点——它完全模拟设备端的协议交互行为,让你在纯软件环境下完成端到端的通信测试。
简单来说:下载即用,点几下鼠标,你的电脑就变成了一台可以随时操控的“虚拟 PLC”或“模拟摄像头”。
二、核心能力一览
ProtoForge 不仅仅是一个数据模拟器(只改数值),它实现了
全链路的协议握手与交互。
-
17 种工业协议:覆盖 Modbus(TCP/RTU)、OPC-UA、MQTT、HTTP、GB28181(视频国标)、Siemens S7、BACnet 等主流协议。
-
53+ 设备模板:内置 PLC、CNC、传感器、摄像头模板,只需选择模板 -> 起名 -> 创建,三步生成虚拟设备。
-
实时调试日志:WebSocket 实时推送协议报文,支持按协议/关键词筛选,快速定位 Bug。
-
可视化场景编排:拖拽式配置设备联动规则(如:温度 > 80℃ 时自动启动风扇设备)。
-
完整测试框架:支持 14 种断言类型,一键生成测试报告,自动诊断通信问题。
-
多语言 SDK:提供 Python、Java、Go、C# SDK,覆盖全部 API,方便自动化集成。
-
可视化配置:无需改代码,前端页面直接修改系统端口和配置。
三、5 分钟极速上手
1. 环境准备
确保已安装 Python 3.10+ 和 Node.js 18+。
2. 启动后端服务
打开终端,执行以下命令:
# 克隆项目
git clone https://github.com/suoten/ProtoForge.git
cd ProtoForge
# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # Windows 请执行 .\venv\Scripts\activate
# 安装后端依赖
pip install -e .
# 初始化配置
protoforge init
# 启动服务(默认端口 8000)
protoforge runAuto代码解读复制代码展开代码▼
3. 启动前端界面
另开一个终端,进入
web 目录启动前端开发服务器:
cd ProtoForge/web
npm install
npm run devAuto代码解读复制代码
4. 登录体验
登录后的操作路径:
-
启动协议:点击左侧「协议服务」->「一键启动」。
-
创建设备:点击「模板市场」-> 选择一个
Modbus PLC 模板 -> 点击「一键创建」。
-
查看数据:进入「设备列表」-> 点击「测点」,你会看到实时跳变的温度、压力等仿真数值。
四、深度场景:GB28181 国标视频全链路仿真
这是 ProtoForge 的一个亮点功能。如果你在开发 GB28181 上级平台(如视频网关),不需要接入真实摄像头,ProtoForge 可以模拟完整的摄像头注册和推流过程:
-
SIP 注册:模拟摄像头向你的平台发送 SIP REGISTER 请求。
-
目录查询:响应 MESSAGE 目录查询。
-
INVITE 请求:接收你的平台发起的 INVITE 请求。
-
RTP 推流:自动发送 PS 封装的 RTP 视频流(25fps)。
-
BYE 断开:响应停止推流指令。
这使得在无硬件环境下调试 SIP 信令交互和 RTP 收流解析成为可能。
五、强大的测试与集成能力
1. 自动化测试
在 UI 界面点击「仿真测试」,系统会自动生成测试用例,针对你的数据采集程序进行断言验证(支持大于、小于、包含、正则匹配等)。测试完成后生成 HTML 报告,便于归档。
2. 数据转发
模拟出的数据可以实时转发到:
-
InfluxDB:进行时序数据分析。
-
HTTP Webhook:触发业务系统。
-
文件:保存为 CSV/JSON 用于离线分析。
3. EdgeLite 网关对接
若配合
EdgeLite 网关 使用,在设备配置中填写 EdgeLite 网关地址,ProtoForge 的虚拟设备会自动注册到边缘网关,模拟“云-边-端”协同架构。
六、部署方式
ProtoForge 支持多种部署模式,满足不同场景需求:
|
部署方式 |
适用场景 |
命令/操作 |
|
本地快速体验 |
开发测试、功能尝鲜 |
protoforge run +
npm run dev |
|
Docker 一键部署 |
无需配置环境,快速验证 |
docker-compose up -d |
|
服务器生产部署 |
团队使用、7x24 小时仿真服务 |
Nginx 代理 +
protoforge run |
七、常见问题排查 (FAQ)
Q: 启动时提示
port already in use
?
A: 编辑根目录下的
.env 文件,修改
PROTOFORGE_PORT=你的端口,或者关闭占用端口的程序。
Q: 为什么有些协议(如 OPC-UA)启动失败?
A: 这些协议依赖较重的第三方库,需执行全量安装命令:
pip install -e ".[all]"Auto代码解读复制代码
Q: 前端页面空白?
A: 如果是生产部署,请先执行
cd web && npm run build 构建前端静态文件;如果是开发模式,确认后端服务(端口 8000)正在运行。
Q: 忘记 admin 密码?
A: 停止服务,删除
data/protoforge.db 文件,重启后系统会自动重建数据库并恢复默认密码
admin/admin。(注意:这会清空已有设备配置,请谨慎操作,建议提前备份)
八、相关资源
结语
ProtoForge 的目标是让物联网开发不再受限于硬件。无论你是需要测试上位机的数据采集逻辑,还是调试视频监控平台的信令交互,ProtoForge 都能提供一个高保真、易操作的仿真环境。
如果你正在从事 IoT、工业自动化或智慧安防相关的开发,不妨 Star 收藏这个项目,5 分钟后你就拥有了一整间“虚拟设备实验室”。