该文章以下内容仅针对M5310A模块,其他模块在指令上或许会有所不同,直接进入正题。
一、测试模组介绍。
首先我测试的硬件是M5310A,直接采用移动的NB物联开发板,板载的芯片是STM32F103,但本次测试不打算通过单片机用程序连上OneNet,而是打算直接用串口,通过AT指令连上Onenet。
二、AT指令的介绍
模块默认波特率9600,停止位/数据位/奇偶校验都为常规设置。模块相关指令如下:
0,开机后,模块串口会输出以下信息
1,AT:模块正常开机启动测试,正常返回OK。
2,AT+CIMI:查询NBcard卡号
3,AT+CSQ:查询信号质量,返回“+CSQ:信号,99”,如“+CSQ:14,99”;
***注意:若显示“99,99”,则表示无信号,可能为卡被异常锁定或天线等原因。
4,AT+CEREG? :判断PS域附着状态,返回+CEREG:0,1
***注意:该模组不支持常规电话通讯卡,电话卡返回”+CEREG:0,2“,后续是无法连上OneNet的,只有正常NB卡才能正确返回并通信。
5,AT+CGATT?:查询模组PS附着状态,正常返回+CGATT:1
6,AT+CIMI:识别 SIM 卡的IMSI
三、MQTT指令的介绍
这里的MQTT指令实际上也是一个可带参数的AT指令,具体的参数和介绍,这里不做介绍,这里仅先将用到的MQTT指令列下:
1,AT+MQTTCFG=参数:该命令用于配置MQTT的连接参数。
2,AT+MQTTOPEN=参数:连接MQTT服务器
3,AT+MQTTSTAT?:查询MQTT连接状态
4,AT+MQTTSUB=参数:订阅消息
5,AT+MQTTPUB=参数:发布消息
6,AT+MQTTDEL:删除MQTT客户端实例,并释放资源。
***当指令1,2配置错误时,需要通过该指令方可重新配置
四、OneNet平台设置
- OneNet新旧平台的差别
OneNet平台登录后,进入控制台默认会进入新版控制台。新平台的左上角可以切换至旧版。
这里需要重新补充一下MQTT的第一个指令介绍。在该指令中,id和user分别对应OneNet创建设备后对应的设备ID和产品ID,同一产品下可以创建多个设备。passwd对应APIKey。
但OneNet比较让人费解的是,OneNet平台分有新旧控制台,对于新控制台,创建的设备是不存在设备ID的,而对于旧控制台,又有多种子方式创建产品,其中NB-IoT和MQTT物联网组件在passwd这个参数上都有所不同,甚至需要通过其他软件,输入一些参数去生成。由于缺少上述参数,都无法正确配置AT+MQTTCFG指令(注意:配置AT+MQTTCFG指令时,只要格式正确,都会返回OK,无法检查参数的错误,只有配置下一个指令AT+MQTTOPEN,才会进行错误提醒)。
这里我参考了很多网上方法,但无法正常连上,只有多协议接入方式才最容易接入该平台。
***注意:若其他人想通过其他子方式或新平台接入,查看官方文档时需要注意,各个接入方式对应的官方文档都有所不同,很容易看混,导致查到错误的资料,
- 创建产品的设置
创建产品设置比较重要的是选择“移动蜂窝网络”以及接入协议选择“MQTT旧版”。其他选项根据需求填写。 - 创建设备的设置
创建设备的鉴权信息可以随意写。如果有研究其他子方式会发现,其他子方式的passwd也叫鉴权信息,但对于该方式,此处的鉴权信息并非passwd。
实际的passwd在创建完成设备后点击详情会进入如下页面(若页面不一致,则基本是由于进入的子方式不对,请转为“多协议接入”方式进行创建)。创建完成后,下图中APIkey默认为空,只需要点击添加APIkey,在弹出页面随意填写,点击即可生成独有的APIkey,该APIkey即为passwd。
五、连接OneNet
经过上述步骤,我们已经可以获得产品ID,设备ID和passwd。
以我创建的为例:
id:453052(即产品ID)
user:765366083(即设备ID)
passwd:WvRYEYaUPLRLQwWRsvz3cu=L####(即APIkey,最后四位为个人打码)
对于AT+MQTTCFG命令,其他参数如下:(针对OneNet平台,理解成默认即可)
host:183.230.40.39
port:6002
经组合,指令为:
AT+MQTTCFG=“183.230.40.39”,6002,“765366083”,60,“453052”,“WvRYEYaUPLRLQwWRsvz3cu=L####”,1
以下为开机后通过串口调试助手连上OneNet的操作。
至此,OneNet上已经显示设备已在线。