目录
1.MQTT CLI 工具说明
2.配置变量
3.模拟设备上报事件(MQTT → 平台)
3.1 上报开锁事件(lock.open)
3.2 上报电量事件(battery.low)
4.设备订阅命令(接收平台下发)
5.平台(或网关)下发命令(curl → MQTT → 设备)
5.1 下发开锁命令
5.2 设置一次性密码
6.Kafka 中确认消息流程(可选)
6.1 消费事件 Topic(MQTT → Kafka)
6.2 消费命令 Topic(API → Kafka → MQTT)
7.设备生命周期模拟脚本(一次跑完)
8.End-to-End 测试步骤总结

「单设备端到端调试脚本(MQTT CLI / curl)」 ——适合 智能锁 / IoT 设备 调试,涵盖 设备发消息 → MQTT → 网关 → Kafka → API → 下发命令 的完整链路。
1.MQTT CLI 工具说明
建议使用其中之一:
| 工具 | 命令 | 描述 |
| mosquitto_pub/sub | mosquitto_pub | 最通用、轻量 |
| MQTTX CLI | mqttx pub | 功能更现代 |
| EMQX MQTT CLI | emqx_mqttx_cli | 兼容 MQTT5 |
以下示例默认采用 mosquitto,你可以替换成 MQTTX。
2.配置变量
# ———- MQTT 服务器 ———-
MQTT_HOST=\”mqtt.example.com\”
MQTT_PORT=1883
MQTT_USER=\”testDevice\”
MQTT_PASS=\”123456\”
# ———- 设备信息 ———-
DEVICE_ID=\”lock001\”
TOPIC_EVENT=\”iot/lock/${DEVICE_ID}/event\”
TOPIC_STATUS=\”iot/lock/${DEVICE_ID}/status\”
TOPIC_CMD=\”iot/lock/${DEVICE_ID}/cmd\”
3.模拟设备上报事件(MQTT → 平台)
3.1 上报开锁事件(lock.open)
mosquitto_pub \\
-h $MQTT_HOST -p $MQTT_PORT \\
-u $MQTT_USER -P $MQTT_PASS \\
-t $TOPIC_EVENT \\
-m \'{
\”eventType\”: \”lock.open\”,
\”timestamp\”: \”\’$(date -u +\”%Y-%m-%dT%H:%M:%SZ\”)\’\”,
\”method\”: \”password\”,
\”userId\”: \”u001\”
}\’
3.2 上报电量事件(battery.low)
mosquitto_pub \\
-h $MQTT_HOST -p $MQTT_PORT \\
-u $MQTT_USER -P $MQTT_PASS \\
-t $TOPIC_EVENT \\
-m \'{
\”eventType\”: \”battery.low\”,
\”timestamp\”: \”\’$(date -u +\”%Y-%m-%dT%H:%M:%SZ\”)\’\”,
\”level\”: 18
}\’
4.设备订阅命令(接收平台下发)
设备端:
mosquitto_sub \\
-h $MQTT_HOST -p $MQTT_PORT \\
-u $MQTT_USER -P $MQTT_PASS \\
-t $TOPIC_CMD
保持等待命令中…
5.平台(或网关)下发命令(curl → MQTT → 设备)
假设你有一个 RESTful API → Kafka → MQTT 下发链路,通常:
curl → Service → Kafka(topic: cmd) → MQTT Gateway → MQTT CMD topic → Device
5.1 下发开锁命令
curl -X POST https://api.example.com/iot/cmd \\
-H \”Content-Type: application/json\” \\
-d \”{
\\\”deviceId\\\”: \\\”${DEVICE_ID}\\\”,
\\\”command\\\”: \\\”unlock\\\”,
\\\”requestId\\\”: \\\”req-$(date +%s)\\\”
}\”
设备会在 $TOPIC_CMD 中收到:
{
\”command\”: \”unlock\”,
\”requestId\”: \”req-1735543100\”
}
5.2 设置一次性密码
curl -X POST https://api.example.com/iot/cmd \\
-H \”Content-Type: application/json\” \\
-d \”{
\\\”deviceId\\\”: \\\”${DEVIC




