MQTT报文介绍
一、connect报文
connect报文有三个部分组成,固定报文、可变报文、有效载荷三个部分。
首先是固定报文:
、消息类型如下:
所以固定报头为10 XX(10 A3 01 )
其次是可变报头
可变报头协议名、协议级别、连接标志、保持连接四个部分组成。
协议名:
因此对于此的协议名为: 00 04 4D 51 54 54
协议级别:
故协议级别为 04
连接标志:
故连接标志为 C2
保持连接:
故保持连接为 00 64
有效载荷:
设备ID和产品ID如下:
下面为在onenet中进行创建
设备ID为:vibrate01 产品ID为:8HMWX6Vb1E 但是要转化为ASCII
经转化设备ID为:00 09 76 69 62 72 61 74 65 30 31 (前面两位为长度)
产品ID为:00 0A 38 48 4D 57 58 36 56 62 31 45 (前面两位为长度)
Token:
利用如下工具
其中
et要将时间转为时间戳 method选择 sha1
生成的:version=2018-10-31&res=products%2F8HMWX6Vb1E%2Fdevices%2Fvibrate01&et=2017881776&method=sha1&sign=bCrs7VgsCFRz0OdbfGYDr945El0%3D
将其转为ASCII 为00 80 76 65 72 73 69 6F 6E 3D 32 30 31 38 2D 31 30 2D 33 31 26 72 65 73 3D 70 72 6F 64 75 63 74 73 25 32 46 38 48 4D 57 58 36 56 62 31 45 25 32 46 64 65 76 69 63 65 73 25 32 46 76 69 62 72 61 74 65 30 31 26 65 74 3D 32 30 31 37 38 38 31 37 37 36 26 6D 65 74 68 6F 64 3D 73 68 61 31 26 73 69 67 6E 3D 62 43 72 73 37 56 67 73 43 46 52 7A 30 4F 64 62 66 47 59 44 72 39 34 35 45 6C 30 25 33 44(前两个为长度 128转化为16进制的)
现在确定剩余长度的值
10 XX 00 04 4D 51 54 54 04 C2 00 64 00 09 76 69 62 72 61 74 65 30 31 00 0A 38 48 4D 57 58 36 56 62 31 45 00 80 76 65 72 73 69 6F 6E 3D 32 30 31 38 2D 31 30 2D 33 31 26 72 65 73 3D 70 72 6F 64 75 63 74 73 25 32 46 38 48 4D 57 58 36 56 62 31 45 25 32 46 64 65 76 69 63 65 73 25 32 46 76 69 62 72 61 74 65 30 31 26 65 74 3D 32 30 31 37 38 38 31 37 37 36 26 6D 65 74 68 6F 64 3D 73 68 61 31 26 73 69 67 6E 3D 62 43 72 73 37 56 67 73 43 46 52 7A 30 4F 64 62 66 47 59 44 72 39 34 35 45 6C 30 25 33 44
在10 XX后面 有162个 剩余长度计算如下
用画笔工具给162进行解释
162-127=35 则0100011 (后7位)8位为1 表明后面有字节
后面那个字节 00000001 (128)第8位表明后面无字节
因此报文为:
10 A3 01 00 04 4D 51 54 54 04 C2 00 64 00 09 76 69 62 72 61 74 65 30 31 00 0A 38 48 4D 57 58 36 56 62 31 45 00 80 76 65 72 73 69 6F 6E 3D 32 30 31 38 2D 31 30 2D 33 31 26 72 65 73 3D 70 72 6F 64 75 63 74 73 25 32 46 38 48 4D 57 58 36 56 62 31 45 25 32 46 64 65 76 69 63 65 73 25 32 46 76 69 62 72 61 74 65 30 31 26 65 74 3D 32 30 31 37 38 38 31 37 37 36 26 6D 65 74 68 6F 64 3D 73 68 61 31 26 73 69 67 6E 3D 62 43 72 73 37 56 67 73 43 46 52 7A 30 4F 64 62 66 47 59 44 72 39 34 35 45 6C 30 25 33 44
连接成功:
二、CONNACK报文
固定报头
故报文为20 02 00 00 剩余长度两个字节
三、SUBSCRIBE报文
报文同样由三个部分组成:固定报头 可变报头 有效载荷
主题过滤器在onenet中进行选择
选择 $sys/8HMWX6Vb1E/vibrate01/thing/property/post/reply
转化为ASCII
24 73 79 73 2F 38 48 4D 57 58 36 56 62 31 45 2F 76 69 62 72 61 74 65 30 31 2F 74 68 69 6E 67 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74 2F 72 65 70 6C 79
长度为10 则 00 33 24 73 79 73 2F 38 48 4D 57 58 36 56 62 31 45 2F 76 69 62 72 61 74 65 30 31 2F 74 68 69 6E 67 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74 2F 72 65 70 6C 79
则综合上述;
82 38 00 0A 00 33 24 73 79 73 2F 38 48 4D 57 58 36 56 62 31 45 2F 76 69 62 72 61 74 65 30 31 2F 74 68 69 6E 67 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74 2F 72 65 70 6C 79 00
三、SUBACK报文
由固定报头、可变报头、有效载荷三个部分组成
固定报头
可变报头
故返回的应该为: 90 03 00 0A 00
四、UNSUBSCRIBE 报文
固定报头 可变报头 有效载荷
则固定报头 :A2 XX
可变报头为 00 0B
选择 $sys/8HMWX6Vb1E/vibrate01/thing/property/post/reply
转化为ASCII
24 73 79 73 2F 38 48 4D 57 58 36 56 62 31 45 2F 76 69 62 72 61 74 65 30 31 2F 74 68 69 6E 67 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74 2F 72 65 70 6C 79
长度为10 则 00 33 24 73 79 73 2F 38 48 4D 57 58 36 56 62 31 45 2F 76 69 62 72 61 74 65 30 31 2F 74 68 69 6E 67 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74 2F 72 65 70 6C 79
则综合上述;
A2 37 00 0B 00 33 24 73 79 73 2F 38 48 4D 57 58 36 56 62 31 45 2F 76 69 62 72 61 74 65 30 31 2F 74 68 69 6E 67 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74 2F 72 65 70 6C 79
五、UNSUBACK 报文
固定报头 可变报头