跳至主要內容

移远 4G 系列模组 AT 命令 MQTT 接入

约 1058 字大约 4 分钟

移远 4G 系列模组 AT 命令 MQTT 接入

移远 4G 系列模组的 AT 命令支持 MQTT,请参考以下步骤,只需几分钟就可以接入云平台并上报数据,还可以从云平台下发命令实现远程实时控制。

提示

如果您还不了解云平台的 MQTT 接入协议,可以点击 设备 MQTT 接入 详细了解。

支持模组

使用官方 AT 固件,支持以下模组型号。

  • EC200x:EC200T 系列、EC200S 系列、EC200N-CN
  • EC600x:EC600S-CN、EC600N-CN
  • EG912Y:EG912Y 系列

在控制台创建设备

进入 ThingsCloud 控制台open in new window,创建一个新的设备,进入 设备详情页>连接,获得以下信息,用于随后的设备 MQTT 接入。

  • MQTT 地址、端口
  • AccessToken: 作为 MQTT username
  • ProjectKey: 作为 MQTT password

模组 AT 命令

检查网络

查询卡状态

AT+CPIN?

+CPIN: READY

OK

查询网络注册情况

AT+CREG?

+CREG: 0,1

OK

以上 AT 命令均返回 OK ,表示网络正常。

参数配置

配置 MQTT 接收模式

AT+QMTCFG="recv/mode",0,0,1

建立 TCP 连接

在设备详情页的【连接】选项中,找到当前可用区的 MQTT 服务器域名和端口,例如:

mqtt://<domain>:<port>

然后发送以下 AT 命令:

AT+QMTOPEN=0,<domain>,<port>
OK

+QMTOPEN: 0,0

以上 AT 命令的第一个参数 0,表示 MQTT 客户端标识符,取值范围是 0~5。

需要特别注意的是,此时模组和云平台成功建立了 TCP 连接,但还没有完成 MQTT 身份验证,此时服务器会等待 5 秒,如果 5 秒内没有发送下边的 AT 指令,云平台将会自动断开 TCP 连接。

如果收到云平台关闭连接的消息,请再次发送上边的 AT 命令。

完成 MQTT 身份验证

在设备详情页的【连接】选项中找到设备证书标识 <AccessToken><ProjectKey>

发送以下 AT 命令,完成 MQTT 身份验证,成功完成 MQTT 连接。

AT+QMTCONN=0,"thingscloud","<AccessToken>","<ProjectKey>"
OK

+QMTCONN: 0,0

上报属性

至此,模组和云平台已建立 MQTT 连接,我们可以向云平台发布消息或订阅消息。

我们先来发送一个简单的属性上报,消息内容为符合属性上报协议的 JSON 结构,如下:

{
    "temperature": 31.6
}

实际传输中,JSONASCII字符串形式,过滤调换行和缩进,如下:

{"temperature":31.6}

接下来,使用以下 AT 命令,发送这个属性结构到云平台。

发送前,需要先计算消息字符串的长度,这里是 20 个字节。

AT+QMTPUBEX=0,0,0,0,attributes,20
>

该 AT 命令告诉模块将要发送一条 20 字节的消息,收到返回的 > 后,继续向模组串口发送字符串即可。若实际发送的长度超过了 20 个字节,多出来的字节会被删除。

发送成功后,模组会返回以下消息:

OK

+QMTPUBEX: 0,0,0

此时,在云平台的设备详情页,可以看到出现了名为 temperature 的属性和值。

通过在属性 JSON 结构中放置更多属性,您可以将设备上更多数据上传到云平台。

订阅属性下发

如果希望设备能够实时接收云平台下发的属性数据,模组发送以下 AT 命令:

AT+QMTSUB=0,0
,attributes/push,0
OK

+QMTSUB: 0,0,0

订阅命令下发

如果希望设备能够实时接收云平台下发的命令消息,模组发送以下 AT 命令:

AT+QMTSUB=0,0
,command/send/+,0
OK

+QMTSUB: 0,0,0

接收订阅数据下发

通过上边的主题订阅,一旦云平台有相应的消息下发,模组便会将消息透传到使用 AT 的串口。

AT+QMTRECV=0

例如,当云平台下发了命令消息后,模组立即收到以下消息:

+QMTRECV: 0,0,command/send/1000,{"method":"restart","params":{"timeout":10},"id":1000}

OK

收到的命令消息结构如下:

{
    "method": "restart",
    "params": {
        "timeout": 10
    },
    "id": 1000
}

关闭 MQTT 连接

AT+QMTDISC=0
OK

+QMTDISC: 0,0

关闭 TCP 连接

AT+QMTCLOSE=0
OK

+QMTCLOSE: 0,0