mqtt协议详解_阿里云物联网平台使用心得(16)MQTT协议详解CONNECT负载

1f7e7a5893c32d62e8f2c1b92956385c.png

题目

大家好,超子又和大家见面了,超子我能力有限,水平不高,有什么错误的地方,欢迎板砖。上一篇文章,超子给大家介绍了,如何在阿里云物联网平台上建立产品和设备,以及获取三元组信息的方法,那么今天超子就详解下CONNECT报文中的负载。

物联网平台的官方说明都在左侧导航产品文档下物联网设备与接入中,内容非常多,基本涵盖了物联网平台使用中的方方面面,在介绍负载的时候,我把相关的信息总结一下,因为产品介绍文档中比较分散,所以就不带着大家看产品文档了,有兴趣的话,大家可以自己去看看。

(1)产品文档中介绍了阿里云物联网平台的域名和端口号,超子总结如下

域 名: *.iot-as-mqtt.cn-shanghai.aliyuncs.com

端口号: 1883

其中*号需要替换成自己三元组中的ProductKey

373ad1f0af653e1699abe6dff8e9fc4d.png

三元组信息

那么按上图三元组中的信息,域名就是 a12dTIroTJC.iot-as-mqtt.cn-shanghai.aliyuncs.com

(2)接下来是客户端ID的构成,超子总结如下

客户端ID :*|securemode=3,signmethod=hmacsha1|

其中*号需要替换成自己三元组中的DeviceName ,按上图三元组中的信息进行替换

客户端ID就是:D001|securemode=3,signmethod=hmacsha1|

长度共计38字节,实验的时候我们需要发16进制的数据。并且简化书写,去掉0x,然后还要在最前面加上两个字节,表示客户端ID 的长度,最终结果如下

00 26 44 30 30 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

(3)接下来是用户名的构成,超子总结如下

用户名 : * (注意不要把&符号丢了)

其中*号需要替换成自己三元组中的DeviceName ,其中#号需要替换成自己三元组中的ProductKey

那么按上图三元组中的信息替换 ,用户名就是 : D001&a12dTIroTJC

长度共计16字节,我们还是简化书写16进制,并且最前面加入表示长度的两个字节,最终结果如下

00 10 44 30 30 31 26 61 31 32 64 54 49 72 6F 54 4A 43

(4)接下来是密码的构成,超子总结如下

密码需要进行一次hmacsha1加密 ,用三元组中的DeviceSecret做为秘钥对clientId*deviceName*productKey#加密

其中*号需要替换成自己三元组中的DeviceName ,其中#号需要替换成自己三元组中的ProductKey

那么按上图三元组中的信息替换 ,结果如下

clientIdD001deviceNameD001productKeya12dTIroTJC

然后DeviceSecret是jBiRd3INpmL0zrb8XgURzP6JJOmFWMdJ,网上找个在线加密网站,进行一次hmacsha1加密 ,如下图所示

34457ed0d93e864cbd701b9f08546c08.png

加密

加密后的结果简化书写16进制,并且最前面加入表示长度的两个字节,密码的最终结果如下:

00 28 35 33 66 65 37 33 36 65 64 37 35 34 38 32 34 39 32 33 34 64 37 38 64 33 38 33 66 34 66 38 31 38 64 63 64 39 36 61 37 65

到此负载中的3个信息都构建好了,那么把3个信息按顺序,先是客户端id,然后是用户名,最后是密码,组合在一起,最终数据,简化书写16进制如下

00 26 44 30 30 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 44 30 30 31 26 61 31 32 64 54 49 72 6F 54 4A 43 00 28 35 33 66 65 37 33 36 65 64 37 35 34 38 32 34 39 32 33 34 64 37 38 64 33 38 33 66 34 66 38 31 38 64 63 64 39 36 61 37 65

总共100个字节,到此为止,CONNECT报文的负载,也算是完成了,那么下篇文章,超子就用网络调试助手软件,实际测试一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
阿里云物联网平台是一种基于云计算的物联网解决方案,提供了多种相关技术和服务。其中,MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,通常用于物联网设备之间的通信。 在阿里云物联网平台中,MQTT可以通过3个通道进行数据传输。这三个通道可以分别用于传输设备状态、设备属性和设备事件。通过这样的数据传输,物联网平台可以帮助用户实现对设备的监控、控制、数据采集和分析等功能。 具体来说,MQTT协议是一种基于发布/订阅机制的协议。物联网设备可以通过订阅某个主题,以接收相关的数据消息。同时,设备也可以发布自己的数据消息到指定的主题,供其他设备或应用程序订阅和使用。 在物联网开关领域,MQTT协议可以发挥重要作用。物联网开关是一种可以连接智能设备的装置,例如灯光开关、电源开关等。通过采用MQTT协议,物联网开关可以与其他物联网设备进行通信,接收和发送相关的控制消息。这样的交互可以实现对设备的智能控制和远程管理,提高了设备的便捷性和智能化水平。 总之,阿里云物联网平台MQTT协议,提供了一种高效的物联网设备通信方式,通过mqtt 3路数据,mqtt协议和物联网开关的结合,可以实现对设备的智能控制和数据传输,为物联网应用提供了强大的技术支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值