AT应用指南-AT指令指南-阿里云
目录1概述:2获取秘钥2.1 激活PDP网络2.2初始化 HTTP 服务:AT+HTTPINIT2.3设置 HTTP 参数值:AT+HTTPPARA2.4 写数据:AT+HTTPDATA2.5HTTP 方式激活:AT+HTTPACTION2.6查询 HTTP 服务响应:AT+HTTPREAD2.7终止 HTTP 任务:AT+HTTPTERM2.8HTTP 错误码:ERROR:3. 连接阿里云3.2
目录
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: (取值列表),( |
参数定义:
参数 | 定义 | 取值 | 对取值的说明 |
---|---|---|---|
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=<start_address> ,<byte_size> | +HTTPREAD:<date_len> OK |
执行命令 | AT+HTTPREAD | +HTTPREAD:<date_len> OK 读取 AT+HTTPACTION=0 或 AT+HTTPDATA 命令的所有响 应数据。 执行命令用来将 HTTP 服务器的响应输出到 UART 或者输出准备好 POST 到服务器的数据。 |
测试命令 | AT+HTTPREAD=? | +HTTPREAD: (list of supported <start_address>s),( list of supported<byte_size>s) OK |
参数定义:
参数 | 定义 | 取值 | 对取值的说明 |
---|---|---|---|
<date_len> | 实际输出数据长度 | ||
HTTP 服务器对AT+HTTPACTION=0命令 的响应数据 | |||
<start_address> | 输出数据的起点 | 0~319488 | 单位:字节 |
<byte_size> | 输出数据的长度 | 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=? | <clean_session>和保活时间 |
4 相关资料以及购买链接
相关开发板购买链接
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及时读取出来,以防缓冲区满出错
AT版本如何设计HTTP应用逻辑
参见文章
http://doc.openluat.com/article/626/0
https://doc.openluat.com/article/2236
更多推荐
所有评论(0)