本文主要是介绍使用MQTT连接onenet云平台(六 SUBSCRIBE),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一.报文格式
MQTT分为3部分固定报头+可变报文+有效负荷
SUBSCRIBE是订阅指令,订阅后如果topic有数据会自动下发给我们。
1.1固定报头
如下图可知
byte1,类型为8,需要注意保留位为2,即82
byte2,剩余长度,暂时设置为??
例子:
固定报文:
1.类型:SUBSCRIBE,即82
2.剩余长度:暂定??,即??
1.2可变报头
数据也是2个byte,表示的是发送第几条报文(存疑)
如下图可知,图中使用的是标识符10,我们先暂时用这个。后续订阅不同的主题,应该需要进行编号。
byte1,标识符高低8位为0,即00
byte2,标识符低8位为10,即A0
例子:
固定报文:
1.类型:SUBSCRIBE,即82
2.剩余长度:暂定??,即??
可变报文
1.报文标识符高8位:00
2.报文标识符低8位:0A
1.3有效载荷
发送订阅的主题信息使用UTF8格式 即在发送每一个信息之前都要加上发送数据的个数。
SUBSCRIBE:一共9个数据 00 09 61 70 70 5F 74 6F 70 69 63
质量等级:设置为0,即00
例子:
固定报文:
1.类型:SUBSCRIBE,即82
2.剩余长度:暂定??,即??
可变报文
1.报文标识符高8位:00
2.报文标识符低8位:0A
有效载荷
SUBSCRIBE:00 09 61 70 70 5F 74 6F 70 69 63
质量等级:00
综上,得出实际的例子:82 ?? 00 0A 00 09 61 70 70 5F 74 6F 70 69 63 00
可以计算出有效长度??为00 0A 00 09 61 70 70 5F 74 6F 70 69 63 00数量之和,即14,0x0E
得出:82 0E 00 0A 00 09 61 70 70 5F 74 6F 70 69 63 00
二.MQTT报文发送测试
2.1发送connect
connect报文:10 25 00 04 4D 51 54 54 04 C2 00 78 00 09 39 30 31 35 30 35 38 32 34 00 06 34 39 31 36 34 34 00 06 31 32 33 34 35 36
2.2发送订阅app_topic
订阅app_topic报文:82 0E 00 0A 00 09 61 70 70 5F 74 6F 70 69 63 00
2.3发送PINGREQ保活
顺便测试一下PINGREQ保活指令:C0 00
通过图片可以看到,所有数据都返回成功!!!!!!!!!!!!!
三.查询onenet 的topic
onenet是检测是否有对应的topic,没有就会自动创建一个。
这篇关于使用MQTT连接onenet云平台(六 SUBSCRIBE)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!