如何接入OneNET平台

电子说

1.3w人已加入

描述

下面介绍下如何接入OneNET平台,采用MQTT协议。

首先在百度当中输入OneNET,然后点击进入OneNET平台后,就可以进入到平台端了。第一次使用需要注册,现在一般都是实名制要求,用户注册的时候,根据注册需要,来进行操作即可。

MQTT

OneNET登录界面

登录进入之后,就可以进行设备产品添加了,注意这里的登录协议采用MQTT协议,不是MQTTS,因为现在OneNET改版,推荐的是MQTTS,但是MQTTS目前不适用我们应用。所以用户在使用的时候,请务必选择MQTT这个功能的类目接入平台。

MQTT

在产品服务里面,找到MQTT物联网套件,然后点击立即使用。进入到MQTT产品界面端。

MQTT

进入到界面之后,因为这个界面我们有添加过很多设备,新注册的用户打开这个界面不一定一样,不过可以看到下面有一行原MQTT产品接入迁移的说明,告知用户需要使用MQTT协议可以点击前往旧版的标签,这样注册的产品就是MQTT协议了。

MQTT

点击进入之后,可以看到有很多的协议类型接入,根据不同的产品来实现。对于我们的用法来说,将采用MQTT协议接入,其他的协议是用不到的,有兴趣的用户可以选择尝试使用其他的方式来进行数据接入。

MQTT

然后用户就可以添加产品了,在添加产品的地方,红色星号都是要求用户必须填写的,一般最好都是用英文字符数字代替,尽量不要出现中文名称。联网方式选择移动蜂窝网络,操作系统选择“无”即可。

MQTT

添加好产品之后,就可以添加设备了。点击立即添加设备,因为产品下面可以包含多个设备,并且这样的设备就是对应的硬件。所以一定要添加设备方可使用。

MQTT

添加设备里面的有个鉴权信息,这个非常重要,后面在设备登录的时候,需要用到,显示应该是可以自己定义的数据,具体鉴权信息用户可以自己添加,使用数字与符号,尽量不要用一些特殊字符代替。

MQTT

这样就注册好了,然后设备会显示“离线”,这时只要单片机端控制模块发送数据到OneNET平台进行激活就可以了。

下面就是对照程序即可。这里采用的是EC20内置的MQTT代码规范来实现的

MQTT服务器和端口号:183.230.40.39,6002

MQTT协议用户可以参考EC20 MQTT手册来进行学习。具体查看:

Quectel_EC2x&EG9x&EM05_MQTT_Application_Note_V1.1。

MQTT

上面的是MQTT设置指令,需要注意OneNET使用的版本是3.11版本的MQTT协议;默认是3.1的,所以需要先设置下版本,否则是无法连接到OneNET平台的。

设置好版本之后,就可以去连接OneNET的服务器了。其实这里的登录服务器与TCP登录没有区别,所以这里采用TCP指令或者是MQTT指令实现的效果都是一样的。

注意IP和端口,如果没有错的话,就会返回登录成功0,0。那么登录到服务器的第一步是成功了。

MQTT

登录到服务器,需要输入登录验证,因为OneNET为了规范,不可能让任意一个非法的用户登录,也会让每一个登录的用户找到自己的设备。所以需要输入相关的参数来接入,这个在后面的阿里云接入也是一样需要的。

这里的参数主要有设备ID,产品ID,鉴权三个元素组成。可以查看下OneNET平台的参数找到这些参数。上面的参数值是我之前就设定好的设备,用户需要根据自己的参数来改动。

MQTT

打开之后,我们看到了产品ID,产品ID是我们需要的参数,所以要将其改到代码里面的值。

MQTT

在产品里面有个设备列表,打开设备列表可以看到设备ID。这个也是关键参数,需要填入到代码当中。

MQTT

在右边的详情里面有一个鉴权信息,这个鉴权信息就是我们自己设定的,所以如果用户记不清了,就可以找到,然后填入进去。

这样三个参数就找完并填好后,编译代码即可。登录验证成功后,就可以发布数据到服务器端了。

MQTT

以上代码是获取到温湿度数据之后,然后拼接成JSON格式数据,然后发到服务器,注意MQTT发送数据都要带主题内容的。而OneNET上显示的主题名称必须是”$dp”,这个在OneNET的数据实现的教程里面有介绍,用户可以看他的手册来掌握设计的原理。

MQTT

上面就是提交到OneNET的数据格式,是完全遵照JSON格式来进行设计的,分为数据流,ID号,数据点,数据值这样的表达方式。

发送成功后,会有发送数据成功响应,并可以在OneNET端看到数据了。那么可以验证下效果。

MQTT

好的,在数据展现区里面看到了数据,也有历史曲线图,非常的方便。用户只要根据上面的说明,更改下参数即可显示板子自带的温湿度传感器采集到的温湿度数据了。

最后借助网络调试助手进行调试(连接MQTT的服务器和端口):

MQTT

MQTT的数据报包括三部分:固定头+可变头+负载(也就是数据)。

已知:

设备ID:602906218--->将字符串转成十六进制:

0x36 0x30 0x32 0x39 0x30 0x36 0x32 0x31 0x38

产品ID:352202--->将字符串转成十六进制:

0x33 0x35 0x32 0x32 0x30 0x32

APIKEY:KFBKEY--->将字符串转成十六进制:

0x4B 0x46 0x42 0x4B 0x45 0x59

MQTT

格式为:2字节字串长度 + utf8字串

602906218是:

0x00 0x09(长度)0x36 0x30 0x32 0x39 0x30 0x36 0x32 0x31 0x38(数据)

负载部分则为:

00 09 36 30 32 39 30 36 32 31 38 00 06 33 35 32 32 30 32 00 06 4B 46 42 4B 45 59

/*综上所述:

固定头:10 ??

可变头:00 04 4D 51 54 54 04 C2 00 78

负载:00 09 36 30 32 39 30 36 32 31 38 00 06 33 35 32 32 30 32 00 06 4B 46 42 4B 45 59

*/

/*??=可变头长度+负载长度=0x25*/

//于是,用于连接服务器所发送的数据报为:

10 25 00 04 4D 51 54 54 04 C2 00 78 00 09 36 30 32 39 30 36 32 31 38 00 06 33 35 32 32 30 32 00 06 4B 46 42 4B 45 59

MQTT

注:byte8=0xC2,则:

Userflag=1;Passwordflag=1;平台不允许匿名登陆,因此这两个标志位在连接时必须设置为1。

WillRetainFlag=0;WillQosFlag=0;WillFlag=0;

CleanSessionFlag=1;

服务器返回:20 02 01 00 

20:服务器返回类型编号;

MQTT

02:长度;

01:session信息在服务器已保持;

MQTT

00:成功。

  
      审核编辑:彭静
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分