目录
5.平台(或网关)下发命令(curl → MQTT → 设备)
6.2 消费命令 Topic(API → Kafka → MQTT)

「单设备端到端调试脚本(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

最低0.47元/天 解锁文章
1089

被折叠的 条评论
为什么被折叠?



