MQTT
学习来源:https://www.bilibili.com/video/BV1Qz411B7ax/.
优点:精简,平台支持广,实时性高
以下测试基于阿里云物联平台
测试工具:网络调试助手(TCP Client)
topic互相订阅
报文14个
1.报文汇总
C:客户端;S:服务器
2.阿里云物联平台
3.Qos
3.1:Qos0
只发送一次
3.2:QOS1
至少分发一次,至少收到一次确认
3.3:QOS2
只分发一次,两次确认 (耗费服务器资源)
4.报头
固定报头+可变报头+负载
5.CONNECT(16进制)
5.1数据格式
10 ??
byte1: 10
byte2: 剩余长度值(可变报头+负载)
剩余长度每个字节第7位为标志位,置高表示用到下一字节
200:C8 01 其中C8(1 1001000) 第7位置高表进位;即C8实 际表示十六进制48,十进制72
1000:E8 07
20000: A0 9C 01
40000: C0 B8 02
40000-16834*2=7232
7232/128 = 56
7232%128 = 64
64(100 0000) 高位置1 (1100 0000) C0
56(11 1000) 高位置1(1011 1000)B8
2--------------------------------------------- 02
5.2固定报头
10 ??
5.3 可变报头(固定十个字节)
00 04 4D 51 54 54 04 C2 00 64
11000010 (C2)
byte9 byte10
连接时间,若超过时间未发送数据,便被剔除连接
若保持一直连接 使用ping命令
例如设置100s (00 64)
5.4 有效载荷(3个)
客户端标识符:
|securemode=3,signmethod=hmacsha1|(*表示设备名)
LIU_|securemode=3,signmethod=hmacsha1|
00 26 4C 49 55 5F 7C 73 65 63 75 72 65 6D 6F 64 65 3D 33 2C 73 69 67 6E 6D 65 74 68 6F 64 3D 68 6D 61 63 73 68 61 31 7C
(遗嘱主题;遗嘱消息)
用户名: *&# (*表示设备名;#表示ProductKey)
LIU_&a1ZpXBeEPDu
00 10 4C 49 55 5F 26 61 31 5A 70 58 42 65 45 50 44 75
密码: 用DeviceSecret做为秘钥对clientIddeviceNameproductKey#进行hmacsha1加密后的结果
hmacsha1加密在线计算网站:http://encode.chahuo.com/.选择hmacSHA1
clientIddeviceName*productKey#
(*用设备名替换;#用productkey替换;密钥选择设备密钥)
00 28 39 65 66 63 37 63 39 63 37 36 35 35 66 33 35 30 38 65 62 30 36 62 62 32 32 65 65 33 62 63 38 63 34 36 62 63 35 62 33 62
阿里云服务器IP地址(华东2) : *.iot-as-mqtt.cn-shanghai.aliyuncs.com *表示自己账号的ProductKey注意替换
阿里云服务器端口号(华东2) : 1883
6.DISCONNECT—16进制
无可变报头和有效载荷
E0 00
7.PING—16进制
无可变报头和有效载荷
C0 00
8.SUBCRIBE—16进制
以主题/sys/a1ZpXBeEPDu/LIU_/thing/service/property/set为例
8.1固定报头
82 ??
8.2报文标识符
相当于消息ID 便于确定消息由谁所发
此处默认 00 0A
8.3有效载荷
9.UNSUBCRIBE—16进制
相比订阅 无最后一个字节(等级字节)
9.1固定报头
A2
9.2可变报头
9.3有效载荷
10.PUBLISH—16进制
等级0
/sys/a1ZpXBeEPDu/LIU_/thing/event/property/post
2F 73 79 73 2F 61 31 5A 70 58 42 65 45 50 44 75 2F 4C 49 55 5F 2F 74 68 69
6E 67 2F 65 76 65 6E 74 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74
{“method”:“thing.event.property.post”,“id”:“000000001”,“params”:{“LightSwitch”:0},“version”:“1.0.0”}
7B 22 6D 65 74 68 6F 64 22 3A 22 74 68 69 6E 67 2E 65 76 65 6E 74 2E 70 72 6F 70 65 72 74 79 2E 70 6F
73 74 22 2C 22 69 64 22 3A 22 30 30 30 30 30 30 30 30 31 22 2C 22 70 61 72 61 6D 73 22 3A 7B 22 4C 69
67 68 74 53 77 69 74 63 68 22 3A 30 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D
10.1固定报头
10.2可变报头
10.3有效载荷
11.参考文档
MQTT-3.1.1标准协议文档
链接: https://mcxiaoke.gitbooks.io/mqtt-cn/content/.