我是靠谱客的博主 虚心凉面,最近开发中收集的这篇文章主要介绍16进制发送 mqtt客户端调试工具_中国移动OneNet物联网平台使用心得(3)MQTT协议后台命令下发...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

108c0a6c6e5e82d6c429616b731dd577.png

题目

大家好,超子又和大家见面了,超子我能力有限,技术不高,有什么错误的地方,欢迎板砖。今天我们测试一下中国移动云OneNet物联网平台下发命令功能,也就是分析一下服务器推送的PUBLISH报文命令。超子在前面介绍阿里云物联网平台的时候,详细介绍了MQTT协议报文的构成,这里就不赘述了,我们直接操作。

f1a4182e945269dfc3110827c884976b.png

首先我们进入开发者中心,然后进入我们的产品中,点击左侧导航栏,进入设备列表。然后再对应的设备内,找到更多操作,然后选择下发命令,在下发命令之前,一定要先发送CONNECT报文,等设备在线后,才能发送,不然设备不在线,发了命令也收不到。

7d054158a61034bee0155f1534871d31.png

进入下发命令的页面后,点击靠近右上角的下发命令按键。

385e45ae6b61f2514e905d8db4d35946.png

我们可以发送字符串格式或16进制格式的数据,这里我们就选择发字符串吧,然后命令框中输入abc123,然后页面往下看,点击发送按键,再提醒一下大家,点击发送之前,一定要先发送CONNECT报文,让设备在线。

48b404808004350400b27a2b18437b59.png

我们用网络调试助手软件,测试一下,首先是发送CONNECT报文,我们看到服务器正确的回复了我们,说明设备在线了,然后在点击OneNet服务器后台发送命令的按键后,红圈中就是接收到的PUBLISH报文命令。我们复制下来分析一下。

30 32 00 2A 24 63 72 65 71 2F 62 66 62 62 32 30 63 37 2D 34 35 62 65 2D 35 30 66 62 2D 62 65 34 65 2D 34 61 65 63 64 38 35 66 31 65 65 64 61 62 63 31 32 33

以上是服务器发给我们的数据,都是16进制的数据,简化书写,去掉了0x。开头是30表示是等级0的PUBLISH报文,发送方向是S->C,也就是服务器推送给我们的命令。再看第2个字节是0x32,十进制就是50,表示可变报头和负载一共50个字节,因为是等级0的PUBLISH报文,所以可变报文就是topic字符串再加上2个字节的长度表示。负载就是我们在后台下发的命令数据,负载数据不需要2个字节的长度表示,所以命令是多少字节,负载数据就是多少字节。

接下来的两个字节0x00 0x2A ,换成16进制是42,表示topic长度是42个字节,然后再加上0x00 0x2A这两个字节本身,长度就是44,也就是可变报头的长度。然后我们从0x00 0x2A 往后数42个字节,就是topic字符串名称数据 ,截取出来如下所示:

24 63 72 65 71 2F 62 66 62 62 32 30 63 37 2D 34 35 62 65 2D 35 30 66 62 2D 62 65 34 65 2D 34 61 65 63 64 38 35 66 31 65 65 64

以上42个字节就是topic,都是16进制,我们换成字符串就是:$creq/bfbb20c7-45be-50fb-be4e-4aecd85f1eed,这个就是服务器下发命令中使用的topic。

最后还剩下6个字节0x61 0x62 0x63 0x31 0x32 0x33,就是负载数据了,我们换成字符串,因为我们刚才下发的时候,用的是字符串形式,换成字符串后的结果是abc123,和我们刚才从后台下发的命令一样,说明整个下发命令的流程正确。

最后

以上就是虚心凉面为你收集整理的16进制发送 mqtt客户端调试工具_中国移动OneNet物联网平台使用心得(3)MQTT协议后台命令下发...的全部内容,希望文章能够帮你解决16进制发送 mqtt客户端调试工具_中国移动OneNet物联网平台使用心得(3)MQTT协议后台命令下发...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部