【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT

文章目录

  • 前言
  • 一、工具准备
  • 二、MQTT指令列表
  • 三、连接EMQX公共服务器
    • 1.配置入网
    • 2.配置MQTT客户端参数(可忽略)
    • 3.配置云类型
    • 4.打开客户端连接
    • 5.创建连接
    • 6.订阅消息
    • 7.发布消息
    • 8.取消订阅及断开连接
  • 四、连接旧版OneNET平台
    • 1.连接OneNET
    • 2.读取信息
    • 3.发送消息
  • 五、总结
  • 六. 联系我们

前言

       在IoT行业中,智能家居和远程服务器的通信,常用的就是MQTT协议。EC系列作为一款NB-IoT模组,自然也是支持MQTT协议,在EC的出厂的AT固件中,就集成MQTT的指令,本文将会介绍出厂固件的MQTT指令的具体使用方法及使用实例。

一、工具准备

  • 测试用的EC-01开发板,可成功注册网络
  • EC-01的AT指令集手册:nb-iot系列模组at指令集v1.0.pdf
  • 测试用的免费的MQTT服务器:https://www.emqx.com/zh/mqtt/public-mqtt5-broker
  • 测试用的阿里云物联网平台:https://iot.console.aliyun.com/product
  • 测试用的OneNET物联网平台:中国移动物联网开放平台
  • 串口助手

二、MQTT指令列表

        涉及的指令不是很多,但是参数比较多,本文会在后面小节的应用中做详细说明。
网络操作:

  • AT+CGATT 附着网络
  • AT+CGDCONT 设置APN
  • AT+CGACT 激活网络
  • AT+CREG 注册网络

MQTT操作:

  • AT+ECMTCFG 创建客户端
  • AT+ECMTOPEN 打开客户端连接
  • AT+ECMTCONN 创建连接服务器
  • AT+ECMTSUB 订阅Topic
  • AT+ECMTPUB 发布消息
  • AT+ECMTDISC 断开连接

三、连接EMQX公共服务器

       EMQX公共服务器是免费的MQTT服务器,可以模拟私有MQTT服务器的应用场景。
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT

1.配置入网

       连接MQTT远程服务器都需要入网,首次入网必须按以下指令循序发送:

AT+CGATT=1rn
AT+CGDCONT=1,"IP","CMNBIOT1"rn
AT+CGACT=1rn
AT+CREG=1rn

注册成功信息:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT

2.配置MQTT客户端参数(可忽略)

配置心跳时间(单位:s,范围:0-3600,默认120s):

AT+ECMTCFG="keepalive",0,130rn

配置会话类型:

AT+ECMTCFG="session",0,0rn //断开连接后,服务器保存客户端的信息,默认值
AT+ECMTCFG="session",0,1rn //断开连接后,服务器清除客户端的信息

配置数据包的发送超时时间(单位:s,范围:1-60,默认10s):

AT+ECMTCFG="timeout",0,20rn

遗嘱配置:

AT+ECMTCFG="will",0,1rn //配置需要遗嘱标志
AT+ECMTCFG="will",0,,1rn //配置服务质量
AT+ECMTCFG="will",0,,,1rn //配置retain 位服务器保存消息
AT+ECMTCFG="will",0,1,1,1,"pub/ec","swicth1"rn //统一配置遗嘱

MQTT版本配置(默认:MQTT v3.1.1):

AT+ECMTCFG="version",0,3rn //配置MQTT版本为 MQTT v3.1
AT+ECMTCFG="version",0,4rn //配置MQTT版本为 MQTT v3.1.1

配置结果:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT

3.配置云类型

       云类型默认支持现有的平台有三种:mosquitto平台OneNet平台旧版阿里云
除此之外就是自定义的MQTT服务器。本节使用的是EMQX 服务器,不在三种平台以内,所以采用自定义MQTT服务器的方式。

AT+ECMTCFG="cloud",0,3,1rn //配置自定义服务器,数据为json 数据

配置结果:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT

4.打开客户端连接

       第一节中可以得到EMQX的公共服务器连接信息为:

host_name: broker-cn.emqx.io
port: 1883

指令为:

AT+ECMTOPEN=0,"broker-cn.emqx.io",1883rn

执行结果:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT

5.创建连接

       打开客户端连接不是真正的连接服务器,只是给MQTT客户端配置服务器地址及端口号,创建连接才是连接服务器。因为自定义服务器不对client iduser namepassword 做校验,所以可以随便设置
连接服务器指令:

AT+ECMTCONN=0,"EC-01"rn

连接结果:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT

6.订阅消息

       因为本文使用的是EMQX的服务器,消息的收发是需要两个客户端才能实现。本节使用的MQTT客户端是MQTT.fx,下载连接:https://softblade.de/download/
使用按照以下信息连接EMQX:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT
publish 创建以下Topic及输出:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT
EC-01模组AT指令订阅该Topic:

AT+ECMTSUB=0,12345,"pub/ec01",1rn

订阅成功之后,在MQTT.fx 客户端发布消息,EC接收信息:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT

7.发布消息

       同样的,现在MQTT.fx客户端创建订阅Topic:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT

EC-01开发板通过该Topic 向服务器发布消息,例如发送{“swtich”:1}:

AT+ECMTPUB=0,123456,1,0,"sub/ec-01","{"swtich":1}"rn

发送成功:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT
MQTT.fx客户端接收情况:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT

8.取消订阅及断开连接

取消订阅:

AT+ECMTUNS=0,12345,"pub/ec01"rn

断开连接:

AT+ECMTDISC=0rn

四、连接旧版OneNET平台

       OneNET平台的连接需要提前在OneNET平台创建好提供连接的产品及设备:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT
创建好产品和设备之后,获取以下信息:

  • 设备ID:client ID
  • 产品ID:user name
  • 鉴权信息:password

设备ID及鉴权信息获取,本节中的连接信息会在本文结束之后删除:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT
产品ID获取:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT

1.连接OneNET

EC-01 MQTT的连接指令具体参数是:AT+ECMTCONN=,“” [,“”[,“”]]
从上一节中得知,MQTT的客户端配置如下:

  • client ID = 设备ID=999553066
  • user name=产品ID=485938
  • password=鉴权信息=AiThinker123
    从OneNET文档中心可只服务器地址:
    【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT

配置服务器为OneNET平台:

AT+ECMTCFG="cloud",0,1,3rn

打开连接:

AT+ECMTCFG="cloud",0,1,3rn

开始连接:

AT+ECMTCONN=0,"999553066","485938","AiThinker123"rn

执行结果:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT

2.读取信息

       OneNET旧版平台不需要订阅Topic,连接成功之后可在OneNET下发命令:

【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT
收到信息:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT

3.发送消息

       读取数据不需要Topic,但是发布则是需要Topic的,OneNET的发布Topic 同一为:$dp
对服务器发送{"EC-01":"12"}

AT+ECMTPUB=0,1234,0,0,"$dp","{"EC_01":"12"}"rn

发送成功:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT
OneNET数据流接收:
【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT

五、总结

其他平台请参考:
阿里云物联网平台:【安信可NB-IoT模组EC系列AT指令应用笔记④】将设备位置接入阿里云地图,实现空间数据可视化
新版OneNET平台:https://docs.ai-thinker.com/_media/ec系列mqtt连接新版onenet.pdf
阿里云生活物联网平台: 【安信可NB-IoT模组EC系列AT指令应用笔记②】MQTT接入阿里云

六. 联系我们

以上就是本期分享的内容,目的在于让大家快速适应新品方案的开发,更多资料可从我们官网上获取。

官方官网:https://www.ai-thinker.com
开发资料:https://docs.ai-thinker.com/
官方论坛:http://bbs.ai-thinker.com
技术支持:support@aithinker.com

本文章来源于互联网,如有侵权,请联系删除!原文地址:【安信可NB-IoT模组EC系列应用笔记⑦】用这篇文章学会使用EC系列模组的MQTT