移远EC600S-CN (4) - MQTT接入阿里云

news/2024/11/21 0:38:17/

 

MQTT是一种基于 发布/订阅 模式的轻量级通信协议。MQTT专门针对 物联网设备 开发,是一种 低开销、低带宽占用的即时通讯协议。该协议构建于 TCP/IP 上,旨在为低带宽和不稳定网络环境中的物联网设备,提供可靠的网络服务。它的设计思想是简单、开放、规范,易于实现,这些特点使其非常适合 机器间通信(M2M)物联网(IoT)等场景。因其协议简单、数据流量开销低、时延低、对网络条件的容忍度高等特点,特别适合于硬件受限的嵌入式设备。MQTT 最大优点在于,可以以极少的代码和有限的网络带宽,为远程设备连接提供实时可靠的消息服务。

HTTP连接并不适合于物联网设备通信,原因主要如下:

  • 1. 流量、功耗大。HTTP可以看作是单向连接,所以需要设备定时查询状态,导致即使设备空闲还是会产生多余的流量开销,同时增大了空闲功耗。
  • 2. 时延高。云服务器会限制HTTP接入的查询频率,例如OneNET将HTTP的最短刷新间隔限制在3s,以减轻服务器的压力。但导致从用户到设备会产生数秒的时延,用户体验非常不好。

 

上一章使用HTTP连接OneNET,但不建议产品中这么应用,仅作为了解。实际产品肯定要MQTT,体验好太多。

EC600S的MQTT指令支持阿里云、移动OneNET、华为IoT三种云平台,可实现云服务的快速接入,下面介绍如何用EC600S的AT指令以MQTT方式接入阿里云。

同样也适用于 EC200S。(EC200S不支持QuecPython,体积比EC600S略大,但便宜很多)

 

1. 准备

QCOM_V1.6

ma_MQTT.ini(QCOM的配置导入文件,包含我调试使用到的AT命令)

Quectel_EC200x&EC600S&EG912Y系列_MQTT_应用指导_V1.0.pdf

阿里云设备管理账号:阿里云创建产品、设备、获取三元组

以上工具和文档已上传GitHub:EC600S 文档及工具下载

 

对MQTT协议及帧构成有兴趣的,可以看下:(非必要可不看)

        MQTT 3.1.1报文帧详解:MQTT报文帧详解

        网络调试助手接入阿里云:MQTT接入阿里云,逐字节解析

 

2. MQTT接入阿里云 - AT操作流程

  • 1. 开机,设置运营商信息,打开PDP场景。
  • 2. 设置MQTT可选参数。例如:客户端标识、接收模式、阿里云 设备三元组
  • 3. 打开客户端,连接客户端到阿里云MQTT服务器。
  • 4. 订阅/退订主题,接收/上发物模型数据报文。
  • 5. 断开客户端与MQTT服务器的连接,关机。

 

3. 关键AT命令格式

  • 3.1 AT+QMTCFG 配置MQTT可选参数

主要配置 客户端标识、接收模式、阿里云 设备三元组

(1)配置接收模式:AT+QMTCFG="recv/mode",0,0,1
(2)配置阿里云设备三元组:AT+QMTCFG="aliauth",<client_idx>,<product_key>,<device_name>,<device_secret>
例:
AT+QMTCFG="aliauth",0,"a1wFylTxYeD","co_0001","7ab0c4b3532b5783df5fdc58a2895d7a"

<client_idx>:MQTT客户端标识符,范围0~5。(跟TCP使用的socket_id是差不多的意思)

<product_key>:阿里云设备三元组的 ProductKey。

<device_name>:阿里云设备三元组的 DeviceName。

<device_secret>:阿里云设备三元组的 DeviceSecret。

 

  • 3.2 AT+QMTOPEN 打开MQTT客户端网络

(1)查询已经打开的MQTT客户端:AT+QMTOPEN?(2)设置并打开MQTT客户端:AT+QMTOPEN=<client_idx>,<host_name>,<port>
例:
AT+QMTOPEN=0,"iot-as-mqtt.cn-shanghai.aliyuncs.com",1883

<client_idx>:MQTT客户端标识符,范围0~5。

<host_name>:MQTT服务器地址,可以是IP地址或者域名。最大长度100字节。

<port>:服务器端口。范围1~65535。MQTT的端口为 1883。

 

  • 3.3 AT+QMTCONN 连接客户端到MQTT服务器

(1)查询当前有哪些的连接:AT+QMTCONN?
(2)设置客户端连接:AT+QMTCONN=<client_idx>,<clientid>
例:
AT+QMTCONN=0,"clientExample_0"

<client_idx>:MQTT客户端标识符,范围0~5。

<clientid>:客户端标识符。字符串类型。(完全自定义)

 

  • 3.4 AT+QMTSUB 订阅主题

该命令可订阅一个或多个主题。

(1)订阅主题:AT+QMTSUB=<client_idx>,<msgid>,<topic1>,<qos1>[,<topic2>,<qos2>...]
例:
AT+QMTSUB=0,1,"/sys/a1wFylTxYeD/co_0001/thing/service/property/set",0
AT+QMTSUB=0,1,"/sys/a1wFylTxYeD/co_0001/thing/event/property/post",0

<client_idx>:MQTT客户端标识符,范围0~5。

<msgid>:数据包标识符。范围1~65535。(完全自定义,可以与其他帧有重复,但相邻帧尽量不同,方便区分错误返回消息)

<topic>:订阅的主题。字符串类型。

<qos>:消息的QoS等级。默认0,各大厂的服务器一般也只支持0。

 

阿里云下发开关状态、上报温湿度消息,使用的是物模型中自带的主题。可在 " 产品 " - " Topic类列表 " 中查看。

设备上报:/sys/a1wFylTxYeD/${deviceName}/thing/event/property/post

阿里云下发:/sys/a1wFylTxYeD/${deviceName}/thing/service/property/set

 

  • 3.5 AT+QMTUNS 退订主题

该命令可退订一个或多个主题。

(1)退订一个或多个主题:AT+QMTUNS=<client_idx>,<msgid>,<topic1>[,<topic2>...]
例:
AT+QMTUNS=0,2,"/sys/a1wFylTxYeD/co_0001/thing/service/property/set"
AT+QMTUNS=0,2,"/sys/a1wFylTxYeD/co_0001/thing/event/property/post"

<client_idx>:MQTT客户端标识符,范围0~5。

<msgid>:数据包标识符。范围1~65535。(完全自定义,可以与其他帧有重复,但相邻帧尽量不同,方便区分错误返回消息)

<topic>:退订的主题。字符串类型。

 

  • 3.6 AT+QMTPUBEX 发布消息

设备通过该命令发布定长消息到服务器。

发布消息到服务器:AT+QMTPUBEX=<client_idx>,<msgid>,<qos>,<retain>,<topic>,<length>
例:
AT+QMTPUBEX=0,0,0,0,"/sys/a1wFylTxYeD/co_0001/thing/event/property/post",103
报文内容:
{"method":"thing.event.property.post","id":"1142523359","params":{"PowerSwitch_1":0},"version":"1.0.0"}

<client_idx>:MQTT客户端标识符,范围0~5。

<msgid>:数据包标识符。范围1~65535。(完全自定义,可以与其他帧有重复,但相邻帧尽量不同,方便区分错误返回消息)

<qos>:消息的QoS等级。默认0,各大厂的服务器一般也只支持0。

<retain>:消息发送到当前订阅者后,服务器是否保持该消息。0-不保存;1-保存。默认值为0。

<topic>:待发布的主题。

<length>:待发布消息的数据长度。单位字节。

 

 

4. MQTT接入阿里云平台

阿里云设备管理账号:阿里云创建产品、设备、获取三元组

上电后,短按POWKY,待串口接收到 RDY后,表示模块已经开机。

  • 4.1 PDP场景配置

(设置运营商信息,与上两章TCP、HTTP连接的前半部分操作一样)

RDY
ATOK
AT+CPIN?+CPIN: READYOK
AT+CREG?+CREG: 0,1OK
AT+CGREG?+CGREG: 0,1OK
AT+CEREG?+CEREG: 0,1OK
AT+QICSGP=1+QICSGP: 1,"CMNET","","",1OK
AT+QICSGP=1,1,"CMNET","","",1OK
AT+QIACT=1OK
AT+QIACT?+QIACT: 1,1,1,"10.189.73.246"OK

 

  • 4.2 设置MQTT可选参数

如:客户端标识、接收模式、阿里云 设备三元组。

AT+QMTCFG="recv/mode",0,0,1OK
AT+QMTCFG="aliauth",0,"a1wFylTxYeD","co_0001","7ab0c4b3532b5783df5fdc58a2895d7a"OK

 

  • 4.3 打开客户端

连接客户端到阿里云MQTT服务器。

AT+QMTOPEN=0,"iot-as-mqtt.cn-shanghai.aliyuncs.com",1883OK+QMTOPEN: 0,0
AT+QMTOPEN?+QMTOPEN: 0,"iot-as-mqtt.cn-shanghai.aliyuncs.com",1883OK
AT+QMTCONN=0,"clientExample_0"OK+QMTCONN: 0,0,0
AT+QMTCONN?+QMTCONN: 0,3OK

登陆阿里云,查看设备连接前后的在线状态,在线状态发送改变。阿里云设备管理平台

 

 

  • 4.4 订阅主题

订阅两条主题。一个用于接收阿里云下发,一个用于上报。

AT+QMTSUB=0,1,"/sys/a1wFylTxYeD/co_0001/thing/service/property/set",0OK+QMTSUB: 0,1,0,1
AT+QMTSUB=0,1,"/sys/a1wFylTxYeD/co_0001/thing/event/property/post",0OK+QMTSUB: 0,1,0,1

登陆阿里云设备管理平台。查看到刚刚的两条主题已经存在于设备列表。

 

  • 4.5 退订主题。

退订刚刚订阅的两个主题。

AT+QMTUNS=0,2,"/sys/a1wFylTxYeD/co_0001/thing/service/property/set"OK+QMTUNS: 0,2,0
AT+QMTUNS=0,2,"/sys/a1wFylTxYeD/co_0001/thing/event/property/post"OK+QMTUNS: 0,2,0

查看Topic列表,退订成功。

为了之后的测试能够正常进行,重新订阅这两个主题。

 

  • 4.6 接收阿里云下发的报文

打开 " 在线调试 ",下发一次开关状态。

几乎是与此同时,QCOM输出了阿里云下发的报文,JSON的格式。"PowerSwitch_1":1,一致。

+QMTRECV: 0,0,"/sys/a1wFylTxYeD/co_0001/thing/service/property/set",103,"{"method":"thing.service.property.set","id":"220958108","params":{"PowerSwitch_1":1},"version":"1.0.0"}"

 

  • 4.7 上发报文到阿里云

将刚刚下发的 JSON报文,进行一下修改。主题改为上发,变化下开关状态,上发给阿里云。

AT+QMTPUBEX=0,0,0,0,"/sys/a1wFylTxYeD/co_0001/thing/event/property/post",103> {"method":"thing.event.property.post","id":"1142523359","params":{"PowerSwitch_1":0},"version":"1.0.0"}
OK+QMTPUBEX: 0,0,0

 

查看开关状态,从刚刚的1变为了0,上报成功。

 

再多发送几次,可以以列表的形式查看。

 

  • 4.8 测试时延

时延测试,基本在100ms左右。算上从APP到云,再从云到设备,也不过几百ms,用户很难察觉,比HTTP方式动辄几s的延时好太多。

 

5. 总结

EC600S-CN 的MQTT指令支持阿里云、移动OneNET、华为IoT三种云平台,可实现快速接入,AT指令的操作步骤简单,有助于用户快速开发。

 


http://www.ppmy.cn/news/541351.html

相关文章

大学生html5实训心得体会,实训心得体会600字(精选5篇)

实训心得体会600字(精选5篇) 当我们心中积累了不少感想和见解时,写一篇心得体会,记录下来,这样我们就可以提高对思维的训练。但是心得体会有什么要求呢?下面是小编帮大家整理的实训心得体会600字(精选5篇),欢迎阅读,希望大家能够喜欢。 实训心得体会600字1 时间过的真快,…

移远ec200/600的使用

移远ec200、ec600的使用&#xff1a; linux2.6.22 pppd-2.4.4 ec600s 参考的是ec200s的拨号相关文档&#xff1a; 1:/driver/usb/serial/option.c更改了4个位置&#xff0c;并没 有严格按照ec200s的指导文档来&#xff08;2.6.30以上、3.0以上内核还会涉及wwan、qcserial相…

HaaS600物联网开发板学习笔记(一)---开发板硬件资源

摘要&#xff1a;2020年9月阿里云HaaS100物联网开发板发布&#xff0c;紧接着600开发板也发布了。二者不同之处有很多&#xff0c;最明显的是100是wifi联网&#xff0c;600是gprs联网&#xff0c;也就是“wifi和插卡”的区别。本篇文章开始&#xff0c;将最近一段时间调试HaaS6…

赛6,赛600, 追6 , 追600 无钥匙系统功能升级说明 龙头锁

鉴于原车无钥匙系统功能过于单一&#xff0c;体验方面不够完美&#xff0c;进行如下功能增加以提高用户体验。 大家在用车的过程&#xff0c;如果有什么新的想法和建议欢迎讨论分享。 新增功能汇总: 一.NFC功能 通过NFC 解锁上电&#xff0c;可以刷卡或者刷nfc手机&#xff0c…

600分左右的计算机院校,这11所985大学600分左右就能考,快来捡漏!

从2016年起,我国已经在事实上停止了“985工程”、“211工程”建设,并从2019年起统筹为“双一流”建设,但是985大学作为我国高校中的“天花板”——全国仅39所学校获此殊荣,在社会上早已深入人心,无论是在就业、考研深造各方面都具有优势。所以,即使已经成为历史名词,原9…

html600像素宽如何设置,最小尺寸不得小于600像素(宽)*600像素(高)。最大尺寸不得超过1200像素(宽)*1200像素(高)。...

接美国大使馆消息&#xff0c;自2010年3月1日起&#xff0c;需要办理美国签证的申请人需要在线填写新的美国签证申请表格和新的美国签证照片&#xff0c;本人对美国签证照片最新要求: 递交的数码照片必须符合以下说明的规格。 注意: 如果未能满足以下要求中的任何一条&#xff…

openCPU-EC600简介与软件开发实例小结

openCPU-EC600简介与软件开发实例小结 咸鱼NO FASHION EC600系列包含EC600S、EC600N、EC600U等。具体差异如下&#xff1a; 1、EC600S包含2G4G&#xff0c;单4G模组&#xff08;92脚&#xff09;、ASR1601平台。 2、EC600N包含R1.0&#xff08;92脚&#xff09;、R1.1&…

移远EC600N 4G模块连接步骤

准备进入配置状态 AT OK 进入透传状态 ATCPIN? CPIN: READY选择工作模式为&#xff1a;TCP/IP ATQMTCFG“version”,0,4 ok配置PDP场景 ATQICSGP2 QICSGP: 1,"CMNET","","",1ATQICSGP2,1,“CMNET”,“”,“”,1 ok激活PDP场景2 ATQIACT2 OK配置…