新手友好向 —— 《不会硬件?用 ProtoForge 入门物联网协议开发》

0 阅读3分钟

想学习物联网协议,但被硬件门槛劝退?

  • 买 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。