BC26通过MQTT协议连接ONENET,AT流程

onenet平台操作

首先登录平台,并进入控制台
在这里插入图片描述
选择多协议接入
在这里插入图片描述
点击添加产品,新建一个产品
在这里插入图片描述

名称、类别根据需要填写,接入协议选择MQTT
在这里插入图片描述
新建产品成功:
在这里插入图片描述
点击产品名字,进入产品设置页面,为产品添加设备
在这里插入图片描述
鉴权信息,为避免冲突,需要填入设备独一无二的ID,推荐填模组IMEI
在这里插入图片描述
新建设备成功:
在这里插入图片描述

模组端操作

①确认IP地址分配正常

  命令为:

AT+CGPADDR=1

  正常回应为:

+CGPADDR: 1,100.103.51.110

OK

  如果BC26获得了IP地址说明卡和网络肯定没有问题,其他的就不用查询了。如果查询不到模块的IP,可以使用AT+CPIN?查询一下卡是否连接正常,确认模块是否检测到卡。卡一定要使用移动的物联网卡,使用电信卡只能连接电信的云平台。
  使用AT+CSQ查询一下信号强度。

②设置MQTT版本

首先从onenet平台得知,ONENET的MQTT只支持V3.1.1,模块默认是3.1,因此必须要设置一下才能连接
在这里插入图片描述
  命令为:

AT+QMTCFG="version",0,4  //MQTT版本设置,ONENET的MQTT只支持V3.1.1
OK

③连接onenet服务器端

  查询BC26的MQTT手册得知,命令如下:

AT+QMTOPEN=<TCP_connectID>,<host_name>,<port>

  TCP_connectID上面取值为0。onenet的MQTT服务器地址为183.230.40.39,端口为6002,因此命令如下:

AT+QMTOPEN=0,"183.230.40.39",6002

  正常回应为:

OK

+QMTOPEN: 0,0

  命令返回含义:

+QMTOPEN: <TCP_connectID>,<result>

<result> 整型。命令执行结果。
-1 打开网络失败
0 打开网络成功

  本命令发出后,要在几秒内执行下面④命令,否则会返回:

+QMTSTAT: 0,1

  含义为连接被服务器断开。此时重新执行本步即可。

④对接onenet物联网平台创建的设备

  查询BC26的MQTT手册得知,命令如下:

AT+QMTCONN=<TCP_connectID>,<clientID>[,<username>[,<password>]]

  clientID是设备ID,username是产品ID,password是鉴权信息
  查看设备ID:
在这里插入图片描述
  查看产品ID:
在这里插入图片描述

  查看鉴权:在这里插入图片描述
在这里插入图片描述

于是命令为:

AT+QMTCONN=0,"749342926","449128","866971030565266"

  正常回应为:

OK

+QMTCONN: 0,0,0

  命令返回含义:

+QMTCONN: <TCP_connectID>,<result>[,<ret_code>]

<result> 整型。命令执行结果。
0 数据包发送成功且从服务器接收到 ACK
1 数据包重传
2 数据包发送失败
<ret_code> 整型。连接返回码。
0 接受连接
1 拒绝连接:不支持的协议版本
2 拒绝连接:拒绝标识符
3 拒绝连接:服务器不可用
4 拒绝连接:用户名或密码错误
5 拒绝连接:未授权

  此时可以看到onenet上设备已在线:
在这里插入图片描述

⑤订阅主题

  查询BC26的MQTT手册得知,命令如下:

AT+QMTSUB=<TCP_connectID>,<msgID>,<topic1>,<qos1>[,<topic2>,<qos2>]

<msgID> 整型。数据包的消息标识符。范围: 1~65535<topic> 字符串类型。客户端想要订阅或者退订的主题。最大长度: 255 字节。
<qos> 整型。客户端打算发布消息的 QoS 等级。
0 最多发送一次
1 至少发送一次
2 只发送一次

  我们这里订阅topic为topic/example的信息,具体的topic定义可以去看这里,QoS 等级选择2,因此命令为:

AT+QMTSUB=0,1,"topic/example",2

  正常回应为:

OK

+QMTSUB: 0,1,0,2

  命令返回含义:

+QMTSUB: <TCP_connectID>,<msgID>,<result>[,<value>]

<msgID> 整型。数据包的消息标识符。范围: 1~65535<result> 整型。命令执行结果。
0 数据包发送成功且从服务器接收到 ACK
1 数据包重传
2 数据包发送失败
<value><result>=0,则为已确认 QoS 等级的矢量;参数取值 128 表示服务器拒绝订阅;
若<result>=1,则表示数据包重传次数;
若<result>=2,则不显示。

  再订阅一个主题:

AT+QMTSUB=0,1,"topic/pub",0
OK
+QMTSUB: 0,1,0,0

⑥发布消息

  查询BC26的MQTT手册得知,命令如下:

AT+QMTPUB=<TCP_connectID>,<msgID>,<qos>,<retain>,<topic>,<msg>

<msgID> 整型。数据包的消息标识符。 范围: 0~65535。只有当<qos>=0 时,该参数值为 0<qos> 整型。客户端想要发布消息的 QoS 等级。
0 最多发送一次
1 最少发送一次
2 只发送一次
<retain> 整型。消息发送到当前订阅者后,服务器是否保存该消息。
0 消息发送到当前订阅者后,服务器不保存消息。
1 消息发送到当前订阅者后,服务器保存消息。
<topic> 字符串类型。待发布主题。 最大长度: 255 字节。
<msg> 字符串类型。待发布消息。 最大长度: 700 字节; 若是在数据模式,最大长度: 1024字节。

  命令为:

AT+QMTPUB=0,0,0,0,"topic/pub","hello MQTT."

  正常回应为:

OK

+QMTPUB: 0,0,0

  命令返回含义:

+QMTPUB: <TCP_connectID>,<msgID>,<result>[,<value>]

<msgID> 整型。数据包的消息标识符。 范围: 0~65535。只有当<qos>=0 时,该参数值为 0<result> 整型。命令执行结果。
0 数据包发送成功且从服务器接收 ACK(当<qos>=0 时,发布的消息无需 ACK1 数据包重传
2 数据包发送失败
<value><result>=1,则表示数据包重传次数;
若<result>=02,则不显示。

  因为前面订阅了"topic/pub"主题的消息,因此模组自己也会收到消息推送:

+QMTRECV: 0,0,"topic/pub","hello MQTT."

⑦退订主题

  查询BC26的MQTT手册得知,命令如下:

AT+QMTUNS=<TCP_connectID>,<msgID>,<topic1>[,<topic2>]

<TCP_connectID> 整型。 MQTT Socket 标识符。 范围: 0~5<msgID> 整型。数据包的信息标识符。 范围: 1~65535<topic> 字符串类型。客户端想要订阅或者退订的主题;最大长度: 255 字节。

  因此命令为:

AT+QMTUNS=0,2,"topic/example"

  正常回应为:

OK

+QMTUNS: 0,2,0

  命令返回含义:

+QMTUNS: <TCP_connectID>,<msgID>,<result>

<TCP_connectID> 整型。 MQTT Socket 标识符。 范围: 0~5<msgID> 整型。数据包的信息标识符。 范围: 1~65535<result> 整型。命令执行结果。
0 数据包发送成功且从服务器接收到 ACK
1 数据包重传
2 数据包发送失败

⑧设备从服务器断开

  查询BC26的MQTT手册得知,命令如下:

AT+QMTDISC=<TCP_connectID>

  因此命令为:

AT+QMTDISC=0

  正常回应为:

OK

+QMTDISC: 0,0

  命令返回含义:

+QMTDISC: <TCP_connectID>,<result>

<TCP_connectID> 整型。 MQTT Socket 标识符。范围: 0~5<result> 整型。命令执行结果。
-1 断开连接失败
0 断开连接成功

  此时可以看到onenet上设备已离线:
在这里插入图片描述

⑨关闭设备网络

  查询BC26的MQTT手册得知,命令如下:

AT+QMTCLOSE=<TCP_connectID>

  因此命令为:

AT+QMTCLOSE=0

  正常回应为:

OK

+QMTCLOSE: 0,0

  命令返回含义:

+QMTCLOSE: <TCP_connectID>,<result>

<TCP_connectID> 整型。 MQTT Socket 标识符。范围: 0~5<result> 整型。命令执行结果。
-1 关闭网络失败
0 关闭网络成功

  此命令和⑧好像只能执行一个,执行了一个再执行另一个,就会返回error。

  • 8
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
ESP32是一款强大的微控制器,可以通过MQTT协议连接OneNet平台并上报传感器数据。MQTT是一种轻量级的通信协议,适用于物联网设备之间的数据传输。 首先,为了连接OneNet平台,我们需要通过WiFi或以太网将ESP32与互联网连接起来。然后,我们需要设置ESP32的MQTT客户端参数,包括MQTT服务器地址、端口号、设备ID和鉴权信息等。这些参数可以在OneNet平台的设备管理界面中获取到。 接下来,我们需要配置传感器并获取其数据。ESP32可以通过其GPIO口连接各种传感器,如温度传感器、湿度传感器或光照传感器等。通过读取传感器的数据,我们可以获取到需要上报的信息。 然后,通过MQTT协议将传感器数据发送到OneNet平台。ESP32可以使用MQTT客户端库,如PubSubClient库,来实现MQTT通信。我们需要使用MQTT客户端库的API将传感器数据发布到OneNet的特定Topic中。Topic可以在设备管理界面中找到,它指定要发布数据的目的地。 一旦数据被成功发送到OneNet平台,我们就可以在后台接收和处理这些数据。OneNet平台提供了实时数据展示、数据存储和设备管理等功能,我们可以通过订阅设备的数据Topic来实时监控传感器的数据。 总结起来,通过ESP32使用MQTT协议连接OneNet平台并上报传感器数据,我们需要先连接到互联网,然后设置MQTT客户端参数,配置传感器并获取其数据,最后使用MQTT客户端库将数据发送到OneNet平台。这样,我们就可以方便地监控和管理传感器数据,实现物联网应用的远程监控和控制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【ql君】qlexcel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值