大家好,超子又见面了。超子能力有限,技术低。有什么问题吗?欢迎板砖。今天,我们将一起构建MQTT协议中的CONNECT消息连接Tlink物联网平台。在之前的文章《Tlink物联网平台使用心得(1)建立产品和设备》中,超子介绍了如何在Tlink平台上设置设备组和设备,以及传感器的相关设置,需要大家提前掌握。然后我们构建信息。
首先,CONNECT消息的固定头是0x10?指示剩余长度。我们需要先确定变量头和负载,然后才能计算剩余长度,因此暂时待定。
CONNECT消息中的变量头用于设置信息和各种功能。Tlink物联网平台和阿里巴巴云物联网平台一样,直接取阿里巴巴云的变量头,简化十六进制书写,去掉0x即可。结果如下:
00 04 4D 51 54 54 04 C2 00 64
CONNECT消息中的负载包含三个重要消息:客户端ID、用户名和密码。首先,总结哪些信息对应。
用户名和密码描述
客户端标识:对应设备的序列号
用户名:如上图所示,是一个固定的MQTT。
密码:如上图所示,是一个固定的MQTTPW。
用户名和密码已经确定。让我们找出客户标识的信息在哪里。
设备序列号
在左边的导航栏中,进入设备管理界面,可以看到我们上一篇文章中的两个新设备。设备的序列号,即我们需要的客户端ID,显示在红色圆圈中。让我们以交换设备为例。设备的序列号长度为16。我们把设备的序列号字符串改成十六进制,前面还要加两个字节来表示16的长度。最后的十六进制简化了写入,删除0x后的结果如下:
00 10 32 33 4C 36 39 38 4F 4A 44 53 30 51 31 4D 47 34
看看负载中的用户名。它是一个长度为4字节的固定MQTT。然后,改为十六进制,再在前面加两个字节表示长度为4,最后一个十六进制,简化书写,去掉0x后的结果如下:
00 04 4D 51 54 54
看看负载中的密码。它是一个长度为6字节的固定MQTTPW。然后,将其改为十六进制,然后在前面加两个字节表示长度为6,最后一个十六进制,简化书写,去掉0x后的结果如下:
00 06 4D 51 54 54 50 57
此时,整个负载完成。接下来,我们连接客户端ID、用户名和密码,简化十六进制系统,删除0x。结果如下:
00 10 32 33 4C 36 39 38 4F 4A 44 53 30 51 31 4D 47 34 00 04 4D 51 54 54 00 06 4D 51 54 54 50 57
我们一起算一下,总加载部分是32字节。剩余长度=可变报头负载=10 32=42,42/128=0,一个字节可以固定,十六进制数为0x2A。最后,我们连接固定头、可变头和load,简化十六进制数,去掉0x。最终结果如下:
10 2A 00 04 4D 51 54 54 04 C2 00 64 00 10 32 33 4C 36 39 38 4F 4A 44 53 30 51 31 4D 47 34 00 04 4D 51 54 54 00 06 4D 51 54 54 50 57
构建好CONNECT消息后,我们使用网络助手来实际测量它。Tlink物联网平台提供的域名和端口号如下:
mq.tlink.io:1883
让我们实际测试CONNECT消息,看看它是否可以正常连接到Tlink物联网平台。
网络助手的实际测试消息
在Tlink网络调试助手软件发送消息后,我们看到我们的CONNACK消息的最后一个字节是0x00,这表明我们的CONNECT消息是正确的。这样,我们今天的任务就能圆满完成。