赞
踩
目录
基于Air780E开发板:Air780E文档中心
简介:AT开发
AT固件是通信模组或者单片机(MCU)+ 网络模块标准固件的基本配置,该模式定制化程序较高,简单易上手,但缺点也较为明显,仅用于快速基本功能验证。
本系列主要探讨MQTT方式手动接入、信息订阅及发布的基本原理,后续详细介绍接入多种云平台的基本操作及手动鉴权步骤。
MQTT基本原理及步骤;
Air780E开发板1块,SIM卡1张。
Revision: AirM2M_780E_V1108_LTE_AT
任意串口调试工具(本文使用llcom1.1.1.9,波特率9600)
接口文档可参考:MQTT应用指南
命令手册:配套AT手册
串口工具主界面
Air780E开发板正常开机后共3个串口:
luatools工具启动后,一般会占用2个串口用于debug及升级。
luatools工具
通用串口工具可使用另外一个串口进行AT命令调试:
调试串口选择
本例中如果不同时启动luatools工具,COM12、COM11均可用于AT命令调试(COM13接收SIM卡工作数据流,不能用于AT命令调试)。
该4G模块支持MQTT和MQTT SSl协议,MQTT应用的基本流程如下:
1、激活PDP
2、如果要支持SSL,配置SSL参数
3、通过TCP连接到MQTT服务器
4、发送MQTT CONNECT到服务器,打开会话连接
5、订阅或者发布消息
符号意义:←串口调试工具输入命令流,→ 串口调试工具接收到的数据流
- ←AT+CPIN?
- +CPIN: READY //查询sim卡是否正常
- OK
- AT+CGATT?
- +CGATT: 1 //查询是否附着上数据网络,如果返回+CGATT: 0表示未附着上
- ← AT+CSTT //配置网络
- → AT+CSTT
- OK
- ← AT+CIICR //激活网络
- → AT+CIICR
- OK
- ← AT+CIFSR //查询是否获取IP
- → AT+CIFSR
- 10.63.**.** //获取IP,连接条件准备就绪
一般状态正常后即具备连接条件,可以进行MQTT连接步骤。
如果未能自动附着,可执行手动激活PDP步骤:
- ←AT+SAPBR=3,1,"CONTYPE","GPRS"
- →OK
- ←AT+SAPBR=3,1,"APN","" //设置APN,此处""表示使用从网络端自动获取到的APN
- →OK
- ←AT+SAPBR=1,1 //发起激活PDP的请求
- →OK
- ←AT+SAPBR=2,1 //注意:此命令仅仅查询PDP地址,可以不执行
- →+SAPBR: 1,1,"10.159.*.***" //请求到的PDP地址
如果要支持SSL,需配置SSL参数(结合各云平台接入步骤配置)。非本次介绍的重点。
基本语法:AT+MCONFIG=?+MCONFIG: <clientid>[,<username>,<password>[,(0-2),(0,1),<will_topic>,<will_message>]]
实例:以连接测试地址lbsmqtt.airm2m.com为例,端口:1884
- ← AT+MCONFIG="866289037******","user","password"
- → AT+MCONFIG="866289037******","user","password"
- OK
- ← AT+MIPSTART="lbsmqtt.airm2m.com","1884"
- → AT+MIPSTART="lbsmqtt.airm2m.com","1884"
- OK
- →
- CONNECT OK
- “CONNECT OK”指示建立连接,需尽快提交连接请求。
- 4、发送MQTT CONNECT到服务器,打开会话连接
- ← AT+MIPSTART="lbsmqtt.airm2m.com","1884"
- → AT+MIPSTART="lbsmqtt.airm2m.com","1884"
- OK
- →
- CONNECT OK
- →
- CLOSED //由于手动建立连接后未及时进行会话连接请求,连接被关闭
- ← AT+MIPSTART="lbsmqtt.airm2m.com","1884" //=连接关闭后,重新发起连接请求,
- → AT+MIPSTART="lbsmqtt.airm2m.com","1884"
- OK
- →
- CONNECT OK
- ← AT+MCONNECT=1,120 //1:client 和 server 都会抛弃以前的会话,建立一个新的会话
- //链接保活设置为120s
- → AT+MCONNECT=1,120
- OK
- CONNACK OK //连接建立
设备端在保活时间内至少需要发送一次报文,包括 PING 请求。 如果服务器端在保活时间内未接收到任何报文,会断开连接,设备端需要发起重连。 建议取值在 300s以上。
本命令从客户端到服务器,用于一个或多个订阅主题。
语法规则:AT+MSUB=<topic>,<qos>
<topic>:一个或多个订阅主题
QoS:服务质量,根据不同的使用场景确定。
QoS 0:最多一次 ,QoS 1,尽最大努力传递,不保证消息的传递:至少一次,保证一条消息至少一次传递给接收方;QoS 2:仅一次,保证每条消息仅由预期的收件人接收一次;
实例:lbsmqtt.airm2m.com示例topic订制
- ← AT+MSUB="mqtt/sub_topic",0 //发起订阅
- → AT+MSUB="mqtt/sub_topic",0
- OK
- →
- SUBACK //订阅成功,一旦有服务器端下发的topic信息,会将该信息发送到所有订阅设备
发布消息:AT+MPUB,本命令从客户端到服务器,用于一个或多个订阅主题。
AT+MPUB=?+MPUB:<topic>,(0-2),(0-1),<message>
<topic> the topic of the application 字符串 最大 256 个字节。可以用""括住,也可以不用""
<qos> Quality of Service for application message 0 至多一次 1 至少一次 2 确保只有一次
<retain> retain flag 0 服务器不能存储这个消息也不能移除或替换任何现存的 保留消息。
1 服务器必须存储这个应用消息和它的服务等级质量 (QOS),以便它可以被分发给未来的主题名匹配的订阅者。
meassage 字符串 最大 256 个字节。可以用""括住,也可以不用""
- ← AT+MPUB="mqtt/pub_topic",0,0,"publish 0 payload"
- → AT+MPUB="mqtt/pub_topic",0,0,"publish 0 payload"
- OK //发布成功,服务质量qos=0
- ← AT+MPUB="mqtt/pub_topic",1,0,"publish 1 payload"
- → AT+MPUB="mqtt/pub_topic",1,0,"publish 1 payload"
- OK
- →
- PUBACK //服务质量:qos=1
- ← AT+MPUB="mqtt/pub_topic",2,0,"publish 2 payload"
- → AT+MPUB="mqtt/pub_topic",2,0,"publish 2 payload"
- OK
- →
- PUBREC
- PUBCOMP //服务质量:qos=2
QoS:服务质量
1、发送MIPSTART命令后,收到OK仅仅表示4G模块开始处理这条命令,并不表示TCP已经连接成功;只有收到CONNECT OK才是成功的应答(其余错误应答,参考AT手册)
2、发送MCONNECT命令后,收到OK仅仅表示4G模块开始处理这条命令,并不表示MQTT已经连接成功;只有收到CONNACK OK才是成功的应答(其余错误应答,参考AT手册)
3、发送MSUB命令后,收到OK仅仅表示4G模块开始处理这条命令,并不表示MQTT已经订阅成功;只有收到SUBACK才是成功的应答(其余错误应答,参考AT手册)
4、发送MPUB命令后,如果QOS不是0,则收到OK仅仅表示4G模块开始处理这条命令,并不表示MQTT已经发布成功;只有收到PUBACK(QOS为1时)或者PUBCOMP(QOS为2时)才是成功的应答(其余错误应答,参考AT手册)
- AT+MCONFIG="8662890******","user","password"
- OK
- AT+MIPSTART="lbsmqtt.airm2m.com","1884"
- OK
- CONNECT OK
- AT+MCONNECT=1,60
- OK
- CONNACK OK
- AT+MSUB="mqtt/sub_topic",0
- OK
- SUBACK
- AT+MPUB="mqtt/sub_topic",0,0,"123456"
- //在mqtt/sub_topic上收到订阅消息,payload为123456
- //默认是直接输出收到的订阅消息,不做缓存
- +MSUB: "mqtt/sub_topic",6 byte,123456
- //设置订阅消息的处理模式,设置为缓存模式
- //接下来收到订阅消息时,会提示订阅消息的缓存位置
- AT+MQTTMSGSET=1
- OK
- //在mqtt/sub_topic上收到一条订阅消息,缓存到位置0
- +MSUB: 0
- //主动读取缓存的所有订阅消息
- AT+MQTTMSGGET
- +MSUB:mqtt/sub_topic,6 byte,123456
- OK
- //在mqtt/sub_topic上收到一条订阅消息,缓存到位置0
- +MSUB: 0
- //在mqtt/sub_topic上收到一条订阅消息,缓存到位置1
- +MSUB: 1
- //主动读取缓存的所有订阅消息
- AT+MQTTMSGGET
- +MSUB:mqtt/sub_topic,6 byte,123456
- +MSUB:mqtt/sub_topic,6 byte,123456
- OK
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。