11上传温度到乐联网_中国移动OneNet物联网平台使用心得(4)MQTT协议向后台上传数据...

本文介绍如何通过MQTT协议将温度和湿度数据上传到中国移动OneNet物联网平台。首先创建数据流模板,然后构建包含温度和湿度数据的JSON格式负载,并结合平台要求的特定头部和尾部信息,最后成功发送PUBLISH报文,实现数据上传。
摘要由CSDN通过智能技术生成
2ee3c6fe755dcdc035ccf635846edaac.png

大家好,超子又和大家见面了,超子我能力有限,技术不高,有什么错误的地方,欢迎板砖。今天我们测试一下中国移动OneNet物联网平台上传数据的功能,也就是构建一下发布数据的PUBLISH报文。超子在前面介绍阿里云使用心得的文章中,详细介绍了报文的构成,这里就不赘述了,我们直接操作。

当我们想上传数据到服务器的时候,我们需要给数据找一个家。对于OneNet物联网平台而言,这个数据的家就是数据流, 如果没有建立数据流,数据就没法上传。

77e520a3693fbc4e55504644799b6665.png

我们首先进入开发者中心,然后进入我们的产品管理界面,点击左侧导航栏中的数据流模板。

2e4cc12e8fdc49b927dd114499692e42.png

然后在新打开的数据流模板页面的右上角地方,找到添加数据流模板按键,点击按键。

02818c4cd79851336a0714fb259b1eac.png

我们需要设置数据流的名称,先给温度数据建立一个家,名称填写temp,这个名字大家可以起自己喜欢的。单位和符号填不填无所谓。然后注意看页面下方,有个添加按键,点一下就行。

aaa6bce78fb0583ca2ef2f2809666522.png

然后我们再给湿度数据建立一个数据流,数据流名称是humi,页面下方,点击添加即可 。

4cb673e9dd5571e6aebfc15ed4130289.png

成功添加以上两个数据流后,我们可以在数据流列表中看到刚刚建立的两个数据流,也就是温度temp和湿度humi。数据流的名称是构建数据的关键信息,假设我们需要上传的温度数据是22.2,湿度数据是33.3,那么数据格式如下所示:

{"temp":22.2,"humi":33.3}

注意里面的temp和humi对应数据流的名称,一定不能写错了,写错了数据就找不到家了。我们换成16进制,简化书写,去掉0x的结果如下:

7B 22 74 65 6D 70 22 3A 32 32 2E 32 2C 22 68 75 6D 69 22 3A 33 33 2E 33 7D

我们要构建的是等级0的PUBLISH报文,方向是C->S,也就是发布数据到服务器, 首先固定报头是0x30 ??,??是剩余长度,负载已经构建好了,等我们确定了可变报头之后,再计算剩余长度。可变报头是发布数据用的Topic,我们上传数据时,需要使用的Topic是$dp,很简单,就3个字节,换成16进制,简化书写去掉0x的结果如下:

24 64 70

然后不要忘了再加上2个字节表示长度3,所以可变报头最终结果如下,总共5个字节:

00 03 24 64 70

我们再看一下刚刚构建好的数据{"temp":22.2,"humi":33.3},长度总共是25个字节,OneNet对于上传的数据有自己的要求,就是数据前边必须多加3个字节,这个要求不是MQTT标准协议要求的,是OneNet自己的要求 。第一个字节固定是0x03,然后再加上两个字节,表示数据的长度,也就是表示25,16进制简化书写就是00 19,最终等级0的PUBLISH报文中的负载结果,16进制,简化书写如下,长度总计是28:

03 00 19 7B 22 74 65 6D 70 22 3A 32 32 2E 32 2C 22 68 75 6D 69 22 3A 33 33 2E 33 7D

可变报头和负载都确定好了,那么剩余长度=可变+负载=5+28=33,一个字节就行,16进制是0x21,那么固定报头就是0x30 0x21,然后我们把固定,可变和负载,3个部分连接起来,16进制,简化书写,去掉0x:

30 21 00 03 24 64 70 03 00 19 7B 22 74 65 6D 70 22 3A 32 32 2E 32 2C 22 68 75 6D 69 22 3A 33 33 2E 33 7D

到此整个往OneNet物联网平台服务器上传数据的,等级0的PUBLISH报文就构建好了。我们需要用网络调试助手软件,实际测试一下,一定要注意先发CONNECT报文之后,再发我们的PUBLISH报文,CONNECT报文在《中国移动OneNet物联网平台使用心得(2)MQTT协议CONNECT连接平台》这篇文章中构建好了,大家忘了的话,可以返回去看一下。

046085f83e458c58981ff3c59e142ad8.png

我们首先发送CONNECT报文,成功后,发送PUBLISH报文,因为是等级0,所以服务器不会有什么回复,我们需要到后台看一下,数据有没有上传到后台。

53ae8aa98f00957c7bdc0d536a013bcd.png

产品后台中,我们点击设备列表,可以看到设备在线了,然后点击红圈中的数据流,查看数据。

5466ca0172fcdb3acd76436da5ebcf1f.png

我们看到22.2和33.3已经上传到后台中相应的数据流上了,说明我们等级0的PUBLISH报文正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值