LuatOS-Air AT应用指南--阿里云

1 概述:
物联网平台提供安全可靠的设备连接通信能力,支持设备数据采集上云,规则引擎流转数据和云端数据下发设备端。此外,也提供方便快捷的设备管理能力,支持物模型定义,数据结构化存储,和远程调试、监控、运维。阿里云物联网平台为设备提供安全可靠的连接通信能力,向下连接海量设备,支撑设备数据采集上云;向上提供云端API,服务端通过调用云端API将指令下发至设备端,实现远程控制。本文简述了几种连接阿里云的方法,详细流程参考AT连接阿里云示例

2 获取秘钥
2.1 激活PDP网络
命令 返回值
AT+CPIN? 正常:OK 异常:err:10未检测到卡
AT+CGATT? +CGATT:1正常附着网络 +CGATT:0 未附着网络
AT+SAPBR=3,1,“CONTYPE”,“GPRS” 设置承载类型为GPRS
AT+SAPBR=3,1,“APN”,“” 设置PDP承载的APN参数
AT+SAPBR=1,1 发起PDP激活的请求
AT+SAPBR=2,1 查询PDP地址
2.2 初始化 HTTP 服务:AT+HTTPINIT
命令类型 语法 返回
执行命令 AT+HTTPINIT OK
测试命令 AT+HTTPINIT=? OK
注意事项 在使用HTTP服务前,应该先用AT+HTTPINIT命令来初始化HTTP协议栈
2.3 设置 HTTP 参数值:AT+HTTPPARA
语法规则:

命令类型 语法 返回
设置命令 AT+HTTPPARA= , OK
查询命令 AT+HTTPPARA? +HTTPPARA: list of :) OK
测试命令 AT+HTTPPARA=? +HTTPPARA: “HTTPParamTag”,” HTTPParamValue” OK
参数定义:

参数 定义 取值 对取值的说明
:HTTP参数,包括:
“CID” 承载上下文号码(必选参 数) 1~3
“URL” HTTP 或 HTTPS URL(必选参数) 注:同时支持 HTTPS 和 HTTP URL "http://server/path:tcpPort " 或: "https://server/path:tcpPort " Server: FQDN or IP-address Path: path of file or directory tcpPort: 如果参数省略,将服务连接到 HTTP 默认端口 80。 参考"IETF-RFC 261
“UA” 应用程序必须设置用户代理来识别移动终端。通常操作系统和软件版本信息在设置时都会携带浏览器标识符。 - 默认值为:合宙 module
“PROIP” HTTP 代理服务器的 IP 地址 -
“PROPORT” HTTP 代 理 服 务 器 的 PORT -
“REDIR” 作为 HTTP 客户端时用此标志控制重定向机制。如果此标记设置为 1,当服务器发送重定向码(范围 30x)时,客户端自动发送新的 HTTP 请求 - 默认值为 0(无定向)
“BREAK” HTTP 方法 ”GET” 的参数,整数型 - 获取从断点到结束点的部分数据,注意不是 所 有 的 HTTP 服 务 器 都 支 持 参数。BREAK 最小值是 0。
“BREAKEND” 和“BREAK”一起使用,用于断点续传功能。整数型。 - 如果“BREAKEND”大于“BREAK”,续传的范围从“BREAKEND”到“BREAK”。如果“BREAKEND”小于“BREAK”,续传的范围从“BREAK”到文件结尾。如果 “BREAKEND”和“BREAK”均为 0,将不 会续传。
“USER_DEFINED” 用户自定义参数,为了兼容合宙 2G 模块 用户自定义参数的取值。例如: AT+HTTPPARA=“USER_DEFINED”, “Content-type: json-user-define” 注:如果需要设置多条用户自定义参数,则一条一条地输入。后面输入的不会覆盖以前的。
“USERDATA” 用户自定义参数,作用同 “USER_DEFINED”,为了 用户自定义参数的取值。例如: AT+HTTPPARA=“USERDATA”,“Con
兼容 SIMCOM 模块 tent-type: json-user-define” 注:如果想设置多条用户定义参数,则多条参数之间可以用\r\n 连接。例如: AT+HTTPPARA=“USERDATA”,“Con tent-Type:application/json\r\nAPP KEY:FW” 在 MCU 程序中需要将\r\n 写成[\r\n](file://r/n) 值得一提的是有些 PC 串口工具,例如 SSCOM,会将\r 和\n 当做控制字符处理,所以也需要将\r\n 写成[\r\n ](file://r/n)而另外一些工具,例如 XCOM,不会将\r 和\n 当做控制字符处理,所以直接输入 \r\n
: 的取值。 注:“USER_DEFINED” 和“USERDATA”中内嵌的双引号,用\22表达。
举例:

命令(→) /返回(←) 实例 解释和说明
→ AT+HTTPPARA?
← +HTTPPARA: CID: 1 URL: UA: AM_MODULE PROIP: 0.0.0.0 PROPORT: 0 REDIR: 0 BREAK; 0 BREAKEND: 0 TIMEOUT: 120 CONTENT: USERDATA: OK
2.4 写数据:AT+HTTPDATA
语法规则:

命令类型 语法 返回
设置命令 AT+HTTPDATA=, DOWNLOAD OK
测试命令 AT+HTTPDATA=? +HTTPDATA: (取值列表),(取值列表) OK
参数定义:

参数 定义 取值 对取值的说明
POST 数据的大小 1-102400 最大长度为 102400
0 后面一个参数不判断,相当于把内容清除掉
输入数据的最长时间 1000-120000 单位:ms
注:强烈建议设置的时间要能够全部输入所有的数据,下载数据的真实大小不能大于
2.5 HTTP 方式激活:AT+HTTPACTION
语法规则:

命令类型 语法 返回
设置命令 AT+HTTPACTION= OK 后面紧跟 Unsolicited Result Code: +HTTPACTION: ,,
或如果错误与 ME 功能相关,则返回: +CME ERROR: 后面紧跟 Unsolicited Result Code: +HTTPACTION: ,,
测试命令 AT+HTTPACTION=? +HTTPACTION: (0-2) OK
参数定义:

参数 定义 取值 对取值的说明
HTTP 方法说明 0 GET
1 POST
2 HEAD
得到的数据长度 - 整数型
HTTP 状态码,由远端服务器响应, 参考 TTP1.1(RFC2616) 100 继续(Continue)
101 交换协议(Switching Protocols)
200 确定(OK)
201 已创建(Created)
202 已接受(Accepted)
203 非权威消息(Non-Authoritative Information)
204 无内容(No Content)
205 重置内容(Reset Content)
206 部分内容(Partial Content)
300 多重选择(Multiple Choices)
301 永久删除(Moved Permanently)
302 找到(Found )
303 参考其他(See Other)
304 未修改(Not Modified)
305 使用代理服务器(Use Proxy)
307 临时重定向(Temporary Redirect )
400 错误请求(Bad Request)
401 未授权(Unauthorized)
402 付费请求(Payment Required)
403 禁止(Forbidden)
404 找不到(Not Found)
405 方法不被允许(Method not Allowed)
406 不可接受(Not Acceptable)
407 要 求 进 行 代 理 身 份 认 证 (Proxy AuthenticationRequired)
408 请求超时 (Request Time-out)
409 冲突(Conflict)
410 所请求资源不在服务器上有效,且不知道转发地址(Gone)
411 需要输入长度(Length Required)
412 前提条件失败 (Precondition Failed)
413 请求实体太大(Request Entity Too Large)
414 请求URI太长(Request-URI Too Large)
415 媒体类型不支持(Unsupported Media Type)
416 所 请 求 的 范 围 无 法 满 足(Requested range notsatisfiable)
417 执行失败(Expectation Failed)
500 内部服务器错误(Internal Server Error)
501 未执行 (Not Implemented)
502 网关错误(Bad Gateway)
503 服务不可用(Service Unavailable)
504 网关超时(Gateway Time-out)
505 HTTP 版本不支持(HTTP Version not supported)
600 非 HTTP PDU 格式(Not HTTP PDU)
601 网络错误(Network Error)
602 内存不足(No memory)
603 DNS 错误(DNS Error)
604 栈忙(Stack Busy)
605 SSL建立通道失败
606 SSL通讯警告错误
2.6 查询 HTTP 服务响应:AT+HTTPREAD
语法规则:

命令类型 语法 返回
设置命令 AT+HTTPREAD= , +HTTPREAD: OK
执行命令 AT+HTTPREAD +HTTPREAD: OK 读取 AT+HTTPACTION=0 或 AT+HTTPDATA 命令的所有响 应数据。 执行命令用来将 HTTP 服务器的响应输出到 UART 或者输出准备好 POST 到服务器的数据。
测试命令 AT+HTTPREAD=? +HTTPREAD: (list of supported s),( list of supporteds) OK
参数定义:

参数 定义 取值 对取值的说明
实际输出数据长度
HTTP 服务器对AT+HTTPACTION=0命令 的响应数据
输出数据的起点 0~319488 单位:字节
输出数据的长度 1~319488 单位:字节
2.7 终止 HTTP 任务:AT+HTTPTERM
语法规则:

命令类型 语法 返回
设置命令 AT+HTTPTERM OK
测试命令 AT+HTTPTERM=? OK
2.8 HTTP 错误码:ERROR:
HTTP 错误码会以 ERROR:形式上报。

定义:

取值 英文说明 中文说明
0 Unknown session id 未知的会话 ID
1 File is too short 文件的内容太短
2 DNS is fail 域名解析失败
3 HTTP is busy HTTP 任务正忙
4 Socket is wrong 套接字失败
5 Connect fail 连接失败
6 File is error 文件错误
7 Connection is closed 连接已关闭
8 Connection is destroyed 连接已销毁
9 HTTP header is not found HTTP 头不存在
10 HTTP authentication scheme is not supported HTTP 认证机制不支持
11 PDP active is wrong PDP 激活失败
12 Param is wrong 参数有误
13 No buffer 缓冲区不足
14 PDP deactive is wrong PDP 去激活失败
3. 连接阿里云
##3.1 设置MQTT参数

命令类型 语法 返回
设置命令 AT+MCONFIG=clientid,username,password OK
测试命令 AT+HTTPTERM=? OK
3.2 建立SSLTCP连接
命令类型 语法 返回
设置命令 AT+SSLMIPSTART=“这写自己项目productkey.iot-as-mqtt.cn-shanghai-aliyuncs.com”:1883 OK
示例 AT+HTTPTERM=? **AT+SSLMIPSTART="a1mxL3s6Z7m.iot-as-mqtt.cn-shanghai
测试命令 AT+HTTPTERM=? 和保活时间
4 相关资料以及购买链接
《AT指令手册》

相关开发板购买链接
Air724UG开发板
Air724 开发板使用说明

5 常见问题
Q:为什么我只发了10字节消息,100次却消耗了那么多流量?

A:因为还有HTTP自带的请求头。

Q:为什么频繁请求会失败?

A:支持的http连接总数有限数量为tcp连接数量8个,建议一个http连接返回请求结果之后,再去请求下一个连接;不要使用循环定时器方式不断的发起新的http请求。

Q:如何POST文件?

A: 主要是使用AT+HTTPDATA命令录入文件数据【最长支持100KB】后,发送AT+HTTPACTION=1利用post上传

数据接收缓存问题

AT版本:有缓存机制,内存中有一个的缓冲区(2G模块300KB,4G模块319499字节),收到数据后,插入此缓冲区,然后通过AT口输出urc,提示收到的数据长度;缓冲区满之后,再收到新数据,会丢弃新收到的数据,并通过AT口输出urc提示出错;需要读取数据时,发送AT+HTTPREAD命令读取,可分段读取,也可全部读取

注意:缓冲区位于内存中,断电或者重启后,缓存表中的数据会被清空;虽然缓冲区可以缓存很多数据,但是建议收到数据时,通过AT+HTTPREAD及时读取出来,以防缓冲区满出错

你可能感兴趣的:(lua,阿里云,网络)