其他
物联网MQTT—Connect控制报文
点击上方“果果小师弟”,选择“置顶/星标公众号”
干货福利,第一时间送达!
1.固定报头
1.1最终固定报头
2.可变报头
2.1协议名
2.2协议级别
2.3连接标志
2.4保持连接
2.5总结
2.6最终可变报头
3.有效载荷
3.1原始数据
"ProductKey": "a10zwkUxQUS",
"DeviceName": "LY-1",
"DeviceSecret": "d8b9915513b05d4de32fbed04566edd8"
}
用户名 : *&#
密码 : clientId*deviceName*productKey#
3.2加工后的数据
客户端ID :LY-1|securemode=3,signmethod=hmacsha1|
用户名 :LY-1&a10zwkUxQUS
密码:clientIdLY-1deviceNameLY-1productKeya10zwkUxQUS
经过哈希加密:7a03368e740ff9efb8318c6ba2a0260f2a596f87
用户名 :LY-1&a10zwkUxQUS
经过哈希加密 :7a03368e740ff9efb8318c6ba2a0260f2a596f87
3.3转换成16进制
4C 59 2D 31 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 一共38个字节就是0x26
最终结果:把00 26加到最前面
00 26 4C 59 2D 31 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
用户名:LY-1&a10zwkUxQUS转换为(16进制):
4C 59 2D 31 26 61 31 30 7A 77 6B 55 78 51 55 53 一共16个字节就是0x10
最终结果:把00 10加到最前面
00 10 4C 59 2D 31 26 61 31 30 7A 77 6B 55 78 51 55 53
经过哈希加密:7a03368e740ff9efb8318c6ba2a0260f2a596f87 转换为(16进制)
37 61 30 33 33 36 38 65 37 34 30 66 66 39 65 66 62 38 33 31
38 63 36 62 61 32 61 30 32 36 30 66 32 61 35 39 36 66 38 37 一共40个字节就是0x28
最终结果:把00 28加到最前面
00 28 37 61 30 33 33 36 38 65 37 34 30 66 66 39 65 66 62 38 33
31 38 63 36 62 61 32 61 30 32 36 30 66 32 61 35 39 36 66 38 37
客户端:
00 26 4C 59 2D 31 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用户名:
00 10 4C 59 2D 31 26 61 31 30 7A 77 6B 55 78 51 55 53密码:
00 28 37 61 30 33 33 36 38 65 37 34 30 66 66 39 65 66 62 38 33
31 38 63 36 62 61 32 61 30 32 36 30 66 32 61 35 39 36 66 38 37组合到一起:
00 26 4C 59 2D 31 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 00 10 4C 59 2D 31 26 61 31 30 7A 77 6B 55 78 51 55 53 00 28 37 61 30 33 33 36 38 65 37 34 30 66 66 39 65 66 62 38 33 31 38 63 36 62 61 32 61 30 32 36 30 66 32 61 35 39 36 66 38 37
3.4最终有效载荷
00 26 4C 59 2D 31 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 00 10 4C 59 2D 31 26 61 31 30 7A 77 6B 55 78 51 55 53 00 2837 61 30 33 33 36 38 65 37 34 30 66 66 39 65 66 62 38 33 31 38 63 36 62 61 32 61 30 32 36 30 66 32 61 35 39 36 66 38 37
4.Connect控制报文
10 ?? 00 04 4D 51 54 54 04 C2 00 64 00 26 4C 59 2D 31 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 00 10 4C 59 2D 31 26 61 31 30 7A 77 6B 55 78 51 55 53 00 28 37 61 30 33 33 36 38 65 37 34 30 66 66 39 65 66 62 38 33 31 38 63 36 62 61 32 61 30 32 36 30 66 32 61 35 39 36 66 38 37
这个问号??就是表示在问号后面有几个字符,有几个字符??就代表多少,然后把这个数字转换成16进制填入??就可以了。我们通过数数可以知道??后面有110个数,10进制的110转换成16进制就是0x6E。所以最终得到的CONNECT 控制报文为:
10 6E 00 04 4D 51 54 54 04 C2 00 64 00 264C 59 2D 31 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 00 10 4C 59 2D 31 26 61 31 30 7A 77 6B 55 78 51 55 53 00 28 37 61 30 33 33 36 38 65 37 34 30 66 66 39 65 66 62 38 33 31 38 63 36 62 61 32 61 30 32 36 30 66 32 61 35 39 36 66 38 37
1.协议类型选择 TCP Client
2.本机地址:本机地址会在软件选择TCP Client后默认出现,不用手动选择
3.远程主机地址:这个就是我们创建设备后阿里云的远程地址
5.断开链接
然后我们在连接状态下向服务器发从断开可连接的报文 E0 00,这是服务器就会与客户端断开,由于断开后收不到服务器发来的数据。所以网络调试助手不会接收到任何新消息。
这是我们再到阿里云官网(刷新一下网页)就会发现此时的LY-1设备处于离线状态。哈哈,是不是很奇妙啊!
我们用网络调试助手的目的就我们现在还没有单片机和esp8266,但是我们又必须要学习mqtt协议,只有通过网络调试助手来代替单片机来实现,等我们网络调试助手都调通了之后我们再把他一直到我们的STM32单片机中就可以了。
TCP Client 客户端------单片机(网络调试助手代替单片机)
TCP Server 服务端------阿里云
END