查看原文
其他

移柯L620模组使用MQTT协议连接移动OneNet云平台

不脱发的程序猿 美男子玩编程 2022-09-10

点击上方蓝色字体,关注我们




1


硬件基础



最近调测移柯L620 NB-IoT模组, 特申请调测L620开发板(L620_ EVB),其专门为评估和测试L620模块而设计的,用于帮助开发人员进行开发、调试、测试L620模块。下图及其标注显示了L620开发板的主要功能。




L620是一款封装小,性能稳定可靠,LCC封装的NB-IoT模块,支持3GPP R13/R14规范下涵盖的低频/中频/高频全频段运作。L620的尺寸仅为17.6*15.8*2.3mm,可以满足客户对小尺寸模块产品的需求,同时方便客户减小产品尺寸并优化产品成本;采用的LCC封装可通过标准的SMT设备实现模块的快速生产,使其特别适用于各种IoT产品和设备中。 


其特性如下: 




1


云端部署



 第1步:登录中国移动OneNet官网,注册账号。


填写注册信息。 


OneNET提供企业认证、个人认证两种认证方式,注册账号完成后,用户可以可以根据实际需要选择一种方式进行认证,不同的认证等级具有不同的资源使用权限。


第2步:进入开发者中心,基于MQTT协议,创建物联网产品,这里使用旧版的MQTT协议,在多协议接入中(为什么不使用最新的MQTT物联网套件服务?臣妾没调通啊!,后期追更)。




填写产品信息,从这里开始,请各位小伙伴仔细参照云端的开发文档,理解相关的配置属性,即使官网的文档可读性真的差劲。


添加产品成功。


 第3步:创建产品下的设备,准备创建两个设备。


创建设备:Sub_Node,鉴权信息为:1234。


 创建设备:Pub_Node,鉴权信息为:5678。


创建成功后为离线状态,可以查看其详细信息。


NB-IoT云端通信将会使用到的核心参数。


全部创建完成后,可以查看产品概况信息。


1


软件调测


使用OneNet平台提供的调测软件进行测试。


下载完成后,查看打开MQTT软件,软件具体说明如下:


要想理解深刻,请一定、一定要读开发文档,举个例子,服务器IP、端口是多少?开发文档中有明确说明。



订阅、发布测试


第1步:打开MQTT调测软件,分别创建:Sub_Node和Pub_Node两个模拟设备应用。


第2步:Sub_Node虚拟设备开启设备订阅Topic,Pub_Node虚拟设备开启设备发布Topic,实现Pub_Node虚拟设备发布Topic后,Sub_Node虚拟设备可以订阅接收到Topic。



此时可以在Sub_Node虚拟设备的收到的Topic中查看到Pub_Node虚拟设备发送的Topic数据。


由说明文档可知,可自定义创建Topic,Topic名字,只能由英文,下划线,反斜杠组成,最长1024个字符,同一产品下topic name不重复,每个产品最多100个Topic。


  • 设备通过发送HTTP请求进行topic的创建操作;

  • 平台收到请求后创建topic并返回结果。

请求及响应定义如下:


订阅过程解析如下: 说明文档中对订阅和取消订阅也进行了说明,具体如下所示。


  • 设备发起订阅请求.(报文格式参考4.9);

  • 平台收到请求后更新topic列表;

  • 平台给设备回复SubAck. (报文格式参考4.10);

  • 注:subscribe的request qos级别可以为0、1、2。

 取消订阅过程解析如下:


  • 设备发起取消订阅请求. (报文格式参考4.11);

  • 平台收到请求后更新topic列表;

  • 平台给设备回复UnSubAck. (报文格式参考4.12)。


OneNet平台指令接收调测


随便关闭其中一个MQTT虚拟设备,保留一个可以实现下述操作,这里我保留Sub_Node虚拟设备。

在OneNet更多操作中点击下发命令。



这里我下发字符串类型数据。 


在虚拟设备中可以查看到下发的数据。


可以对下发的数据进行响应回复。


如何得到Tocpic的呢 ,请参考相关手册,这里不再赘述,有疑问的小伙伴可以下方留言交流。


OneNet平台上传数据点


上传数据点有7种数据类型和3种Qos级别,具体方式参见说明文档。


这里我使用第3种数据类型上传数据点,Qos级别默认为0,也就是设备发布Qos0消息(上报数据点),平台收到上报数据点后保存起来。数据流会自动创建sensor节点,并保存数值。




4


L620模组调测




订阅、发布测试


第1步:打开串口调试助手,查看模组的入网配置信息,指令如下:

AT+CEREG? //检查网络状态
+CEREG: 0,2
OK
CT-Self Register: Have already registered!
AT+CESQ //检查信号质量
+CESQ: 34,0,255,255,26,58
OKAT*MBAND? //查看频道
*MBAND: 5
OKAT+CIICR //启动与NB-IoT网络的无线连接
OK
+IP: 10.214.60.155


第2步:网络配置无误后,与OneNet平台建立MQTT连接,这里使用OneNet平台上的Sub_Node节点完成下述操作。

AT+EMQNEW="183.230.40.39","6002",12000,2000  //建立新的MQTT连接

+EMQNEW: 0
OK


指令解析如下:



AT+EMQCON=0,4,"571461182",1000,0,0,"296803","1234" //发送MQTT连接包
OK


 指令解析如下:



 建立连接成功后可以看到云端设备是在线状态。


第3步:建立Topic订阅,订阅Topic为”pub_topic“的消息,指令如下所示:

AT+EMQSUB=0,"pub_topic",1 //Topic订阅
OK


指令解析如下:


第4步:建立Topic发布,发布Topic为”pub_topic“的消息(字符串、十六进制转换在线工具),指令如下所示:

AT+EMQPUB=0,"pub_topic",0,0,0,22,"68656c6c6f20776f726c64" //Topic发布,发送hello world的十六进制
OK


指令解析如下:



数据点订阅、发布


之前使用MQTT工具上传数据点,云端会自动在相应的设备中建立该数据点,接下来使用OneNet平台数据流模板创建数据点,并简要讲解其的使用。


第1步:添加数据流模板。



基于数据流模板创建的数据点是公共的,此时可以看到设备Sub_Node和Pub_Node均有sensor_1122数据点。


第2步:订阅数据点,指令如下所示: 

AT+EMQSUB=0,"/571461182/sensor",1 //数据点订阅
OK


 "/571461182/sensor"参数参照说明文档,具体如下所示:


第3步:若修改数据点数值原理以及操作和发布一致,指令如下所示:

AT+EMQPUB=0,"$dp",1,0,0,42,"0300127b2273656e736f725f31313232223a38387d" //发送数据点{"sensor_1122":88}
OK


Sub_Node设备下的sensor_1122数据点效果如下所示:


这条指令较为复杂,具体解析如下:

  • 数据点的Topic为 ”$dp“,参照说明手册,具体如下:


  •  长度为42,后面的数据为字符串类型,每一位都是一个字符长度,共42位:"0300127b2273656e736f725f31313232223a38387d"

  • "0300127b2273656e736f725f31313232223a38387d" 代表含义参照下表,我使用的是数据类型3上传数据点,03代表数据点类型为第3种;0012代表后面数据字符的长度,后面的数据都是十六进制共18个,转换为十六进制是12,低位数据足够装载,故0012(转换为十六进制由于AT+EMQPUB指令只可以发十六进制,参照该指令说明);7b2273656e736f725f31313232223a38387d是{"sensor_1122":88}字符串的十六进制。


往期推荐


点击阅读原文,更精彩~


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存