以下是使用at组件登录OneNET后,发布报文时,打印的RAW数据:
msh />onenet_upload_cycle
[D/AT] sendline: 0000-0020: 41 54 2B 51 49 53 45 4E 44 3D 30 2C 33 30 AT+QISEND=0,30
msh />[D/AT] recvline: 0000-0020: 0D 0A ..
[D/AT] recvline: 0000-0020: 3E >
[D/AT] sendline: 0000-0020: 32 1C 00 03 24 64 70 20 00 03 00 12 7B 22 74 65 6D 70 65 72 61 74 75 72 65 22 3A 33 33 7D 2...$dp ....{
"temperature":33}
[D/AT] recvline: 0000-0020: 20 0D 0A ..
[D/AT] recvline: 0000-0020: 53 45 4E 44 20 4F 4B 0D 0A SEND OK..
[D/AT] recvline: 0000-0020: 0D 0A ..
[D/AT] recvline: 0000-0020: 2B 51 49 55 52 43 3A 20 22 72 65 63 76 22 2C 30 2C 34 0D 0A +QIURC: "recv",0,4..
[D/AT] urc_recv: 0000-0020: 40 02 20 00 @. .
[D/AT] recvline: 0000-0020: 0D 0A ..
使用mqtt进行发布的时候,实际发送的数据包为32 1C 00 03 24 64 70 20 00 03 00 12 7B 22 74 65 6D 70 65 72 61 74 75 72 65 22 3A 33 33 7D
,其中:
32 1C
是固定头:32
代表publish发布QOS1报文,1C
代表后面的长度;
00 03 24 64 70 20 00
是可变消息头:00 03
代表发布主题长度为3,24 64 70
代表主题为$dp
,20 00
是packid
;
03 00 12 7B 22 74 65 6D 70 65 72 61 74 75 72 65 22 3A 33 33 7D
是有效载荷:03
代表数据是json格式,00 12
代表数据长度为12H即18,7B 22 74 65 6D 70 65 72 61 74 75 72 65 22 3A 33 33 7D
是json格式的内容:{"temperature":33}
,因为这里不包含中文,所以虽然要求是utf-8,但在0-127范围内,utf-8和ascii的编码是一样的。
mqtt发布完成的回复数据包是40 02 20 00
,其中:
40 02
是固定头:40
代表publish_ack报文,02
代表后面的长度;
20 00
是packid
;