CONNECT指令
参照《MQTT 协议 3.1.1 中文版》
实验截图
硬件设计方案
AT模组(SIM800C等)
可以自由在MQTT与HTTP之间进行切换,对于使用阿里云OTA的功能比较方便。
透传模组(塔石E16模组系列)
使用HTTP的时候需要推出透传,AT指令不丰富,导致HTTP的应用难以实现。
调试经验
CONNECT指令比较容易实现,PUBLISH 指令会比较容易出问题。
首先保证发送的数据内容是阿里云的JSON数据格式,这部分可以用MQTT.fx工具进行验证。
{
"method": "thing.service.property.set",
"id": "625067067",
"params": {
"CurrentTemperature": 25.6,
"hue": 9999
},
"version": "1.0.0"
}
其次要按照PUBLISH 指令的格式填充数据,将数据转换为HEX形式。
此部分可参考《使用wireshark深度剖析MQTT》的文章,对比模块发送的数据和wireshark解析的数据,可以判断模块数据发送的正确性。
注意:两个部分有一个出现问题,会导致模块出现掉线。