想学习物联网协议,但被硬件门槛劝退?
- 买 Arduino + 传感器?要焊电路,容易烧板子
- 买 PLC?太贵,编程环境复杂
- 看文档?没有设备实践,看完就忘
ProtoForge 让你零基础入门物联网协议开发。
你需要什么?
- 一台电脑(Windows/Mac/Linux 都行)
- Python 3.10+
- 5 分钟时间
不需要买任何硬件。
第一课:认识 Modbus TCP
Modbus 是工业领域最常用的协议。理解它,你就理解了 50% 的工业通信。
Step 1:启动仿真环境
git clone https://github.com/suoten/ProtoForge.git
cd ProtoForge
pip install -e .
protoforge init
protoforge demo
Step 2:看协议交互
打开「调试日志」,启动 Modbus TCP 协议,创建设备。
你会看到:
→ [Tx] 01 03 00 00 00 02 C4 0B
← [Rx] 01 03 04 00 64 00 0A BA 8D
解析:
- 01:从站地址
- 03:功能码(读保持寄存器)
- 00 00:起始地址
- 00 02:寄存器数量
- C4 0B:CRC 校验
响应:
- 01:从站地址
- 03:功能码
- 04:字节数(2 个寄存器 × 2 字节)
- 00 64:第一个寄存器值(100)
- 00 0A:第二个寄存器值(10)
- BA 8D:CRC 校验
你刚刚看懂了一个真实的 Modbus 报文。
Step 3:用 Python 写客户端
from pymodbus.client import ModbusTcpClient
# 连接 ProtoForge 的虚拟设备
client = ModbusTcpClient('localhost', port=5020)
client.connect()
# 读 2 个保持寄存器
result = client.read_holding_registers(address=0, count=2, slave=1)
print(result.registers) # [100, 10]
# 写寄存器
client.write_register(address=0, value=999, slave=1)
# 再读一次
result = client.read_holding_registers(address=0, count=1, slave=1)
print(result.registers) # [999]
client.close()
你刚刚用代码操作了一个"PLC"。
第二课:理解 MQTT
MQTT 是物联网消息协议,发布/订阅模式。
Step 1:启动 MQTT Broker
ProtoForge 启动 MQTT 协议(端口 1883),它同时是 Broker。
Step 2:用 Python 发布消息
import paho.mqtt.client as mqtt
client = mqtt.Client()
client.connect("localhost", 1883)
# 发布温度数据
client.publish("factory/zone1/temperature", payload="25.5")
client.publish("factory/zone1/humidity", payload="60")
client.disconnect()
Step 3:用 Python 订阅消息
import paho.mqtt.client as mqtt
def on_message(client, userdata, msg):
print(f"{msg.topic}: {msg.payload.decode()}")
client = mqtt.Client()
client.on_message = on_message
client.connect("localhost", 1883)
client.subscribe("factory/zone1/#")
client.loop_forever()
你刚刚实现了一个简单的物联网数据采集系统。
第三课:场景编排
「场景编辑器」让你把多个设备联动起来:
创建一个场景「智能工厂」:
- 添加温湿度传感器(Modbus TCP)
- 添加智能门锁(MQTT)
- 添加报警灯(HTTP)
添加规则:
如果 温度 > 30℃
那么 报警灯 = 红色
并且 发送 MQTT 消息 "factory/alarm"
用 Python 测试:
# 写温度值到 35
client.write_register(address=0, value=35, slave=1)
# 观察报警灯状态变化
# 观察 MQTT 消息
你刚刚实现了一个简单的工业自动化逻辑。
学习路径建议
| 阶段 | 目标 | 使用 ProtoForge |
|---|---|---|
| 第 1 周 | 理解 Modbus | 创建 PLC 设备,读写寄存器 |
| 第 2 周 | 理解 MQTT | 发布/订阅消息,设备联动 |
| 第 3 周 | 理解 HTTP API | 创建 REST 设备,Postman 测试 |
| 第 4 周 | 理解场景编排 | 多设备联动规则 |
| 第 5 周 | 理解测试框架 | 写自动化测试用例 |
| 第 6 周 | 理解 CI/CD | 把测试集成到 GitHub Actions |
不需要硬件,但比硬件更灵活
- 想测试 100 个设备并发?一键创建
- 想测试异常场景(断线、超时、错误响应)?配置即可
- 想测试协议边界条件?修改模板参数
这些用真硬件很难做到。
下一步
当你用 ProtoForge 熟悉了协议逻辑,再去接触真设备:
- 买一块 Arduino(¥50),实现 Modbus RTU 从站
- 买一台二手 PLC(¥500),验证你的代码
- 接一个真实传感器,看数据是否符合预期
ProtoForge 降低了入门门槛,让你先理解原理,再动手实践。
# 5 分钟启动学习环境
git clone https://github.com/suoten/ProtoForge.git
pip install -e ".[all]"
protoforge demo
📦 GitHub: github.com/suoten/Prot… 📦 Gitee: gitee.com/suoten/Prot…
想学物联网协议的兄弟,Star 一下,有问题提 Issue。