快速POST/GET数据流到OneNET
**该文档介绍了AM900E模组通过AT命令对接OneNET的HTTP设备,实现POST/GET(上传和获取)数据流。**
## 1. 注册平台账号
登录[OneNET](https://open.iot.10086.cn/),注册平台账号,然后登录。

## 2. 创建产品,设备,数据流
进入[开发者中心](http://open.iot.10086.cn/product),选择公共协议产品,根据实际情况创建 支持HTTP协议的产品(此文档以AM900E为例),如下图所示:


添加设备

添加APIkey


添加数据流


## 3. PC端通过串口助手向AM900E发送AT命令
### 3.1模块初始化流程
```
AT
OK
//测试串口通讯正常
ATI
AMAZIOT
"GSM850/900/1800/1900","AM900E"
"AM900E_V2.0"
//显示设备厂商,设备硬件版本与软件版本
OK
AT+CPIN?
+CPIN:READY
OK
//显示eSIM状态正常
AT+CREG?
+C2EG: 1,1
OK
//显示设备已注网
AT+CSQ
+CSQ: 25,99
OK
//显示信号条件良好(+CSQ: 25,99中第一个参数需大于15)
```
### 3.2 连接ONENET,POST方法上传数据流
```
AT+CGATT=1
+CGATT:1
OK
//设备已附着
AT+CGACT=1,1
OK
//设备已激活(运行灯DS1快速闪烁)
AT+CIPSTART="TCP","183.230.40.33",80 //联网命令“183.230.40.33”为IP地址,“80”为端口号
OK
CONNECT OK
OK
//模块连接onenet http设备成功
AT+CIPSEND=204
//发送数据明命令:发送204个数据
//发送的数据长度用Notepad++软件统计
> POST /devices/527765150/datapoints HTTP/1.1
api-key: VhsxRAWWUxP84yQbCB4bKM9NBjw=
Host:api.heclouds.com
Connection:open
Content-Length:59
{"datastreams":[{"id":"temp","datapoints":[{"value":31}]}]}
OK
//发送命令完成后,显示“>”符号,然后发送以上数据
//返回“OK”,表示发送
//红色字体要改成自己的设备信息,详见“设备详情”页面
//“527765150”表示设备id
//"VhsxRAWWUxP84yQbCB4bKM9NBjw="表示APIkey
//"temp"表示数据流名称,“31”表示数据流的数值
//“59”为最后一行的数据长度,用Notepad++软件统计
```
下图为要发送的数据,用Notepad++软件统计,然后通过串口发送出去,数据通过串口的单条发送窗口发送。

以下为平台回应信息,显示发送成功。
```
+TCP:HTTP/1.1 200 OK
Date: Mon, 27 May 2019 07:08:08 GMT
Content-Type: application/json
Content-Length: 26
Connection: keep-alive
Server: Apache-Coyote/1.1
Pragma: no-cache]
{"errno":0,"error":"succ"}
```
下图为模组上传的数据流temp,数值为31.

### 2.4 GET方法获取ONENET平台设备信息
获取ONENET平台另一台,设备ID为537721723,数据流为ds_test的最近两个数据流信息
```
AT+CIPSEND=162
>GET http://api.heclouds.com/devices/537721723/datapoints?datastream_id=ds_test&limit=2 HTTP/1.1
api-key: QhYo1auW57sF39rvHV4Xd=Pf9HI=
Host: api.heclouds.com
OK
```
**注意**:数据最后需要增加两个空行,否则平台无法识别数据信息。
返回信息如下:
```
HTTP/1.1 200 OK
Date: Wed, 06 Nov 2019 10:21:49 GMT
Content-Type: application/json
Content-Length: 188
Connection: keep-alive
Server: Apache-Coyote/1.1
Pragma: no-cache
{"errno":0,"data":{"count":2,"datastreams":[{"datapoints":[{"at":"2019-11-06 18:01:13.670","value":31},{"at":"2019-10-28 18:06:24.690","value":123456789}],"id":"ds_test"}]},"error":"succ"}
```
两条数据的数值为123456789