中移M5311模块MQTT协议连接阿里云物联网平台(干货)

Posted ydgd118

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中移M5311模块MQTT协议连接阿里云物联网平台(干货)相关的知识,希望对你有一定的参考价值。

一、准备三元组
在阿里云物联网平台新建产品和设备后,平台给每一个设备自动赋予三元组。

二、准备MQTT协议参数
新建产品时,阿里云物联网平台会分配一个含productkey的子域名,端口号固定是1883。域名中含有阿里云物联网服务器的地理信息,如cn-shanghai,就是华东2服务器。这个不能搞错。

Clinent ID是一个组合,是自己定义的ID号配上附加内容|*****|。这里是|securemode=3,signmethod=hmacsha1|,securemode=3意思是采用TCP直连方式接入,signmethod=hmacsha1意思是采用hmacsha1算法加密解密。

用户名user也是一个组合,是三元组里的DeviceName&ProductKey。DeviceName是在阿里云物联网平台新建设备时为每一个设备起的名字。
将clientId、deviceName、productKey三者连接起来,使用DeviceSecret按照sha1算法进行加密计算得到密码。加密计算可以使用下面这个网页工具:https://1024tools.com/hmac

得到以上参数后,可以先把配置MQTT参数的命令写好,AT+MQTTCFG命令参数含义见下图:

``

AT+MQTTCFG="g************q.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883,"000001|securemode=3,signmethod=hmacsha1|",80,"00001&gb**********q","d14481***************************************31d2ce",1

三、AT命令接入

AT		//确认模组开机正常,返回 OK, 自适应波特率

AT+CLPLMN 命令可清除模组的驻网记录
+CLPLMN: 0 //返回 0, 说明已成功清除记录
OK

ATE0 (可选) //关闭 AT 指令回显
OK

AT+SM=LOCK_FOREVER		//调试时需要模组一直不进入休眠

AT+CEDRXS=0,5 //关闭 eDRX 功能   使用 GRE 长连接或者 MQTT 时必须手动关闭 eDRX 及 PSM

AT+CPSMS=0//禁止模组 PSM 功能,

AT+CIMI //确认读 SIM 卡正常

AT+CEREG? //确认基站注册状态 0,1 或者 0,5 1-代表本地已注册上, 5-代
表漫游已注册上

AT+CGATT? //确认 PDP 激活状态,1-代表已激活 0-代表未激活,M5311 自
动入网后自动激活。

AT+MQTTCFG="g*******Hq.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883,"000001|securemode=3,signmethod=hmacsha1|",80,"00001&g********Hq","d1448138324c6ad************79b8431d2ce",1//注意替换其中的*号



AT+MQTTOPEN=1,1,0		//发送连接建立请求
+MQTTOPEN: OK			//连接成功

AT+MQTTSUB="/gb*******Hq/00001/user/ctr",0 		//订阅主题ctr
+MQTTSUBACK:1,1,	/gb5*******q/00001/user/ctr	//订阅成功响应
+MQTTTO: 3//注意,此处M5311返回订阅超时,但是实际上查询阿里云物联网平台日志是订阅成功的,猜测应该是M5311的固件库没有和阿里云应答匹配上吧。模组默认是10s超时。

AT+MQTTPUB="/gb5*****Hq/00001/user/reply",0,0,0,0,"nihao,aliyun!" //向主题发送数据,字符串格式。
OK
AT+MQTTPUB="/gb*****Hq/00001/user/reply",0,0,0,3,"7E7A7A" //向主题发送数据,HEX格式。
OK

AT+MQTTDISC 断开连接

AT+MQTTDEL 释放资源,之后可以再次使用+MQTTCFG 进 行配置







四、注意事项

  1. 建立MQTT连接前,使用指令AT+MQTTSTAT?\\r\\n查下当前状态,如果是0的话配置参数,如果是1 的话直接发起连接。如果是5的话,已经建立连接,通信即可。如果还需要建立连接,需要关闭当前连接。
  2. 配置参数时,重复配置不接受。如果第一次配置错了,需要使用AT+MQTTDEL命令删除当前错误的配置,然后重新配置。否则会返回+CME ERROR: operation not supported,新的参数不会被接受。
  3. 最后,登录阿里云的密码一定要计算对了否则阿里云服务器拒绝接入。
  4. 使用AT+MQTTCFG配置时,注意keeplive时间设置60s到300s,否则阿里云物联网平台同样拒绝接入。实测30s可以接入,但是建议遵守阿里云规定来防止意外。

    如果 keepAlive 时间小于服务器 ACK 响应检测时间(通过 AT+MQTTTO 设置),会出现 PINGREQ
    检测不到断网的情况。

其他具体应用请参考阿里云和中移官方文档。

以上是关于中移M5311模块MQTT协议连接阿里云物联网平台(干货)的主要内容,如果未能解决你的问题,请参考以下文章

阿里云物联网平台配置ESP8266真实设备AT串口连接,支持MQTT协议通信

阿里云物联网平台配置ESP8266真实设备AT串口连接,支持MQTT协议通信

如何使用 NB-Iot + Arduino 通过MQTT协议上传数据至阿里云平台?

如何使用 NB-Iot + Arduino 通过MQTT协议上传数据至阿里云平台

国内物联网平台初探 ——阿里云物联网套件

阿里云物联网平台实现MQTT通信