接入ONENET流程
## 4使用流程
#### 4.1平台端注册产品(因平台端更新,平台端操作应视具体情况为准)
### 4.1.1注册 OneNET 用户
http://open.iot.10086.cn,进入中移物联网 OneNET 开放平台,注册 OneNET 用户。
### 4.1.2 创建产品
注册用户后,点击右上角的“开发者中心”,进入产品页面。在产品页面右上角点击“创建产品”,输入创建的产品名称等产品信息,并选择设备接入协议为“EDP”。点击确定后,在“产品概况”页面,获取平台自动生成产品 ID 和 Masterkey,如下图所示:
### 4.2新建设备
创建产品,获取产品 ID 和 Masterkey 后,有两种新建设备的方式:一种是通过平台端新建设备,获取设备 ID,然后通过“APIKey 管理”页面,添加设备 APIKey,并关联到新建设备;另一种是通过 AT 指令, 由模组端发起新增设备和设备 APIKey 申请,OneNET 平台通过申请,下发新增的设备 ID 和设备 APIkey。
### 4.2.1方式一:平台端新建设备
### 4.2.1.1查看接入设备情况
平台端新建设备,进入产品概况页面,查看该产品接入设备情况,如下图所示:
### 4.2.1.2添加设备,获取设备 ID
点击“添加设备”,依次填入设备名称和鉴权信息,选择数据保密性,进入新建的设备点击设备名,获取设备 ID: 73可设置鉴权信息写入特定的唯一标识符与设备相关联,如 SIM 卡号等。
### 4.2.1.3添加设备 APIKey
点击“添加 APIKey”,输入新建的 APIKey 名称和关联设备名,获取到设备 APIKey。如下图所示:
### 4.2.2方式二:模组端新建设备
4.2.2.1开机及激活网络
说明:相关流程可参考《AM410E AT 命令用户使用手册》。
### 4.2.2.2申请设备 ID
使用 AT+CMHTTPSET 命令连接 OneNET 平台服务器,使用 AT^ONENETPOST 命令向 OneNET 平台发送申请设备 ID 请求,示例如下:
````
①AT+CMHTTPSET="api.heclouds.com",80,"/devices"
OK
+CMHTTPSET: "183.230.40.33"
②AT^ONENETPOST="{"title":"TV1","auth_info":"ASDFGHJKL","desc":"tv1 test","protocol":"EDP",}","api-key:=ZF38ygYRfnPbCMvFjYOK4kj1jA="
{"title":"TV1","auth_info":"ASDFGHJKL","desc":"tv1 test","protocol":"EDP",}HTTP/1.1 200 OK Date: Tue, 13 Jun 2017 01:14:21 GMT
Content-Type: application/json Content-Length: 57 Connection: close
Server: Apache-Coyote/1.1 Pragma: no-cache
{"errno":0,"data":{"device_id":"7377439"},"error":"succ"}
OK
````

通过判断返回的数据中是否包含的“device_id”字符串,可以知道申请设备 ID 是否成功,其后的字符串“7377439”即为申请的设备 ID 号。
### 4.2.2.3申请设备 APIKey
使用 AT+CMHTTPSET 命令连接 OneNET 平台服务器,使用 AT^ONENETPOST 命令向 OneNET 平台发送申请设备 APIKey 请求,示例如下:
````
①AT+CMHTTPSET="api.heclouds.com",80,"/keys"
OK
+CMHTTPSET: "183.230.40.33"
②AT^ONENETPOST="{"title":"devkey1","permissions":[{"resources":[{"dev_id":"7377439"}]}]}","api-key:
=ZF38ygYRfnPbCMvFjYOK4kj1jA="
CONNECT OK HTTP/1.1 200OK
Date: Tue, 13 Jun 2017 07:14:13 GMT
Content-Type: application/json Content-Length: 72 Connection: close
Server: Apache-Coyote/1.1 Pragma: no-cache
{"errno":0,"data":{"key":"dH=Z8tXZVT3ODYrf0nddhDQ77HA="},"error":"succ"}
OK
````

通过判断返回的数据中是否包含的“key”字符串,可以知道申请设备 APIKey 是否成功,其后的字符串“dH=Z8tXZVT3ODYrf0nddhDQ77HA=”即为申请的设备 APIKey。
### 4.2.2.4查询设备 ID

使用 AT+CMHTTPSET 命令连接 OneNET 平台服务器,使用 AT^ONENETGET 命令向 OneNET 平台发送获取设备信息请求,示例如下:
````
①AT+CMHTTPSET="api.heclouds.com",80,"/devices/7377439"
OK
+CMHTTPSET: "183.230.40.33"
②AT^ONENETGET="api-key: =ZF38ygYRfnPbCMvFjYOK4kj1jA="
CONNECT OK HTTP/1.1 200 OK
Date: Tue, 13 Jun 2017 08:40:42 GMT
Content-Type: application/json Content-Length: 240
Connection: close
Server: Apache-Coyote/1.1 Pragma: no-cache
{"errno":0,"data":{"private":true,"protocol":"EDP","create_time":"2017-06-13 16:31:28","keys":[{"title":"
devkey1","key":"dH=Z8tXZVT3ODYrf0nddhDQ77HA="}],"online":false,"location":{"lon":0,"lat":0},"id":"7377439","auth_
info":"ASDFGHJKL","title":"TV1","tags":[]},"error":"succ"}
````

通过判断返回的数据中是否包含的“\"error\":\"succ\"”字符串,可以得知查询设备 ID 是否成功。
### 4.2.2.5 查询设备 APIKey
使用 AT+CMHTTPSET 命令连接 OneNET 平台服务器,使用 AT^ONENETGET 命令向 OneNET 平台发送查询设备 APIKey 请求,示例如下:
````
①AT+CMHTTPSET="api.heclouds.com",80,"/keys?key=dH=Z8tXZVT3ODYrf0nddhDQ77HA="
OK
+CMHTTPSET: "183.230.40.33"
②AT^ONENETGET="api-key: =ZF38ygYRfnPbCMvFjYOK4kj1jA="
CONNECT OK
HTTP/1.1 200 OK
Date: Tue, 13 Jun 2017 07:28:22 GMT
Content-Type: application/json
Content-Length: 228
Connection: close
Server: Apache-Coyote/1.1
Pragma: no-cache
{"errno":0,"data":{"per_page":1,"total_count":1,"keys":[{"create_time":"2017-06-13
15:25:29","permissions":[{"resources":[{"dev_id":"7377439"}]}],"title":"devkey1","key":"dH=Z8tXZVT3ODYrf0nddhDQ
77HA="}],"page":1},"error":"succ"}
OK
````

通过判断返回的数据中是否包含的“\"error\":\"succ\"”字符串,可以得知查询设备 APIKey 是否成功。
### 4.2.2.6删除设备 ID
使用 AT+CMHTTPSET 命令连接 OneNET 平台服务器,使用 AT^ONENETDELETE 命令向 OneNET 平台发送删除设备 ID 请求,示例如下:
````
①AT+CMHTTPSET="api.heclouds.com",80,"/devices/7377439"
OK
+CMHTTPSET: "183.230.40.33"
②AT^ONENETDELETE="api-key: dH=Z8tXZVT3ODYrf0nddhDQ77HA="
CONNECT OK HTTP/1.1 200 OK
Date: Tue, 13 Jun 2017 01:47:47 GMT
Content-Type: application/json ContentLength: 26 Connection:close
Server: Apache-Coyote/1.1 Pragma: no-cache
{"errno":0,"error":"succ"}
OK
````
通过判断返回的数据中是否包含的“\"error\":\"succ\"”字符串,可以得知删除设备 ID 是否成功。
### 4.2.2.7删除设备 APIkey
使用 AT+CMHTTPSET 命令连接 OneNET 平台服务器,使用 AT^ONENETDELETE 命令向 OneNET 平台发送删除设备 APIKey 请求,示例如下:
````
①AT+CMHTTPSET="api.heclouds.com",80,"/keys/dH=Z8tXZVT3ODYrf0nddhDQ77HA="
OK
+CMHTTPSET: "183.230.40.33" ②AT^ONENETDELETE="api-key: =ZF38ygYRfnPbCMvFjYOK4kj1jA=" CONNECT OK
HTTP/1.1 200 OK
Date: Tue, 13 Jun 2017 07:18:47 GMT
Content-Type: application/json
Content-Length: 26
Connection: close
Server: Apache-Coyote/1.1
Pragma: no-cache
{"errno":0,"error":"succ"}
OK
````
通过判断返回的数据中是否包含的“\"error\":\"succ\"”字符串,可以得知删除设备 APIkey 是否成功。

### 4.3建立连接,数据传输
### 4.3.1使用 HTTP 短连接方式(推荐使用)
### 4.3.1.1开机及激活网络
说明:相关流程可参考《AM410E AT 命令用户使用手册》。
### 4.3.1.2连接云平台服务器
使用 AT+CMHTTPSET 命令连接 OneNET 平台服务器
````
AT+CMHTTPSET="api.heclouds.com",80,"/devices/7377439/datapoints?type=3"
OK
+CMHTTPSET: "183.230.40.33"
````

### 4.3.1.3上传数据到云平台
使用 AT^ONENETPOST 命令上传数据到 OneNET 平台服务器:
````
AT^ONENETPOST="{"temperature":22.5,"humidity":"95.2%"}","api-key: =ZF38ygYRfnPbCMvFjYOK4kj1jA="
CONNECT OK HTTP/1.1 200 OK
Date: Mon, 19 Jun 2017 06:15:13 GMT
Content-Type: application/json Content-Length: 26 Connection: close
Server: Apache-Coyote/1.1 Pragma: no-cache
{"errno":0,"error":"succ"}
````

通过判断返回的数据中是否包含的“\"error\":\"succ\"”字符串,可以得知上传数据是否成功。
### 4.3.1.4获取云平台数据
使用 AT^ONENETPOST 命令上传数据到 OneNET 平台服务器:
````
AT^ONENETGET="api-key: =ZF38ygYRfnPbCMvFjYOK4kj1jA= "
CONNECT OK
HTTP/1.1 200 OK
Date: Tue, 06 Jun 2017 03:44:42 GMT
Content-Type: application/json Content-Length: 225 Connection: close
Server: Apache-Coyote/1.1 Pragma: no-cache
{"errno":0,"data":{"count":2,"datastreams":[{"datapoints":[{"at":"2017-06-06
11:41:28.842","value":22.5}],"id":"temperature"},{"datapoints":[{"at":"2017-06-06
11:41:28.845","value":"95.2%"}],"id":"humidity"},]},"error":"succ"}
````

通过判断返回的数据中是否包含的“\"error\":\"succ\"”字符串,可以得知获取云平台数据是否成功, 然后从返回的数据中获取数据解析数据点。
### 4.3.2使用 EDP 长连接方式
### 4.3.2.1开机及激活网络
说明:相关流程可参考《AM410E AT 命令用户使用手册》。
### 4.3.2.2根据平台端的注册信息,设置模组端参数
````
AT+CIOTMKEY=“=ZF38ygYRfnPbCMvFjYOK4kj1jA=” //设置 Masterkey
AT+CIOTINIT=“TV1”,” tv1 test” //设置设备名称和设备描述参数
AT+CIOTID=” 7377439” // 设 置 设 备 ID
AT+CIOTKEY=”dH=Z8tXZVT3ODYrf0nddhDQ77HA=” //设置设备 APIKEY
````
### 4.3.2.3设置连接模式及相关参数
**方式一**:AT+CIOTCONNECTPARA=0 (1)
或 AT+CIOTCONNECTPARA=0,"7377439","=ZF38ygYRfnPbCMvFjYOK4kj1jA=" (2)
//该方式为 devid+mapikey 方式登录
**方式二**:AT+CIOTCONNECTPARA=1 (1)
或 AT+CIOTCONNECTPARA=1," 89172","ASDFGHJKL" (2)
//该方式为 projectid +authinfo 方式登录
//该模式为默认模式
### 4.3.2.4短连接单次上传小数据
````
(1)AT+CIOTSEND=1,361,3,"teet1,,22.5;teet2,,35%;teet3,,89"//加密,响应模式,响应码 361
(2)AT+CIOTSEND=0,0,3,"teet1,,22.5;teet2,,35%;teet3,,89"//非加密,非响应模式
````
说明:该命令会执行一个完整的数据从建立连接到关闭连接的上传流程
在响应模式下,模组会收到响应消息会打印 +CIOTACK: %d(响应码)
### 4.3.2.5长连接循环上传小数据
````
(1)AT+CIOTSTART=0 //启动数据发送
(2)AT+CIOTDAT=0,3,"te,,22.5;hy,,35%;pm,,89" //上传小数据,非响应模式
…
AT+CIOTDAT=65534,3,"te,,10.5;hy,,12%;pm,,9" //上传小数据,响应模式,响应码 65534
(3)AT+CIOTQUIT //停止数据发送,断开连接
````
说明:在该流程中可持续上传数据,若需保持连接,在不上传数据时应使用 AT+CIOTPING 发送心跳包。否则超过最长连接保持时间,连接将断开上传成功的数据可登录平台端查询。
### 4.3.2.6 状态查询与心跳报文
````
(1)AT+CIOTSTATUS
//查询当前网络状态,返回+CIOTSTATUS: 0 表明设备未在线
//返回+CIOTSTATUS: 1 时表明设备在线,可下发命令,且不能建立新的连接
(2)AT+CIOTPING //心跳报文
````
### 4.3.2.7平台下发命令
当模组与平台连接时,登录服务器,点击下发命令,如下图红框位置所示:

在弹出的页面中发送数据

模组串口打印 +CIOTCMD:3,abc
### 4.3.2.8上传二进制文件
````
(1)AT+CIOTSTART=0 //启动数据发送,传输二进制文件,且不允许加密
(2)AT+CIOTBINSET=0,"test",2583 //设置二进制文件,非响应模式 OR AT+CIOTBINSET=1,"test",2583 //设置二进制文件,非响应模式,响应码 1
//该命令执行后应立即执行 AT+CIOTBINSEND 命令直到二进制分片发送完毕。
过程中不允许执行其他上传命令,包括心跳包。在上传过程中可执行 AT+CIOTBINEND 强制断开上传状态,并断开与服务器的连接
(3)AT+CIOTBINSEND=480,"ffd8ffe000104a46494600010101006000600000ffdb00430008060607060508070707 0909080a0c140d0c0b0b0c1912130f141d1a1f1e1d1a1c1c20242e2720222c231c1c2837292c30313434341f27393d38323c2e333432ffdb0043010909090c0b0c180d0d1832211c213232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232ffc20011080030008803012200021101031101ffc4001a000003010101010000000000000000000000040503020601ffc4001801000301010000000000000000000000000001020304ffda000c03010002100310000001f7e10ea2e1e3ded72f4473ce1be84872e1b25e42b24cc82c13721d725f4148409aee05859e0aeddab88f339d4dafcfeafb7a4f97d2b695123aaea8e6e57327382161c9b8e3c468e40f45c27e678a7477e7c19d8e6ea87a582e23fdae27019ac35e7f4b802285d13407c9afffc400221000020202030002030100000000000000020301040012111314052322303340ffda0008010100010502ff00159b9306c529528b1a444c14198ac59797063616cc8b25836d993687d0378392b39ecc1b5cd6ee762de44fb1fcca4 68026b42627eccac7a1dc892ace36767e53615c86248978ee21c31cb263eb222f0b" //发送二进制文件
(4)AT+CIOTBINSEND=480,"37f296bb55fef6b989831c8196cfa58fb01024ec68419e74162d00a935eccf2711e7490
a6a88679a3af51c5275690c18989258c5dbb19be55aa3581bb751754a48d833d8611b133e3ca0a47b0fb00cba64cc70f9901d744808bf0860c67e35338a42d03fb7ffc4001e11000300020300030000000000000000000001020311121321315161ffda0008010301013f01bb50b6c59fdd3362c92deb676c9db1f676c9d924d2af82d72af3e46a31ae24cee5c8b1bdbf49c5498f13d9d343c4e8c49a5e971c85869bf45292d2381c1fd9d7fa75fe8e3625a3ffc4001f1100020105000301000000000000000000000102031112132104106131ffda0008010201013f018c1c9d90e8f2ebd384976c6b91ae46b91ad8d58d9a9652ec4a73f23c99ec4ed1467dcadd3356fc1d442a8ac2a9115448a8eec84f11d58a5c1c9b7766665f0cccfe0a761bb9ffc400321000010303020403040b0000000000000001000211031221315113232410410612342719114243040435272a1b1d1e1ffda0008010100063f02fb9706873543fb2fad567baa6cdeca5b50d5a5de7a9aa4642b9c602a763da413cc88a6e0e74689c5ecb5adc6b394dba9759c4390a720648329d703ae202 658cb83c48cc2639d01ae13ae42356013b043929e74e75c3735a3138328b4" //发送二进制文件
(5)AT+CIOTBINSEND=480,"3ad27becb86ce6f10eefb2e3789e679d1aae0de1b868f0ac381b6c7fa4e0d125509f0f1 cdbea8bead22c670f29ef8b39b0753f041c1ad7179c67990f65897497774dc47bf1b01a2f0c21a790f5264585b81ea9c5d64188b554398fc2f8a67e6e19bbe329ae1f357f0ee2ddf56a356a9860429f861ecdbaca963a6dc7f9e54dd70163a7c9d6d4b6e74e8aed5dddc531f3d328c557027a8ee87283020140975f6e07a27530f369381b2b60611a8ea97988d1169d0aebb5deed4ec7d0a8aa5ada7bce17d17c18fd4f5032e3a94fb7aa3080a5874b671eab598bb31e88dce71c34ca7976b90b8466291f9ecba8cdd0591d95a1d70b332344434da0b9d954675b8689823dbdd9dd56868191fc795ae1217554036950c6c7db7fffc4002510000202020104020203000000000000000111002131615110417181a1b14091c1e1f0ffda0008010100013f21fc25af09886423b8a8d1c03dbb1064e08182214841c930109297021f0a192040792c98780870309085b1e20c92bb6aa2c6ee963b42b58890f62010a9c90f421060539b0cd383fb8486c78eddb1017cc324d814b18036d7e139e4897fb895b816bc1d42944c37f5b687a2e143cc3c843150bd90106410b377 a88aae80a31843897ed572ea00b7b9acb50d9c7e9c823f8dc343107312981b47" //发送二进制文件
(6)AT+CIOTBINSEND=480,"dcc321dcc3dedc6d6bdc5d4b59adc14302286dc1d1860e36b278f133c384980348ed1 446e050606c45adba7ca88350a3455f68439c6cdd5430b1f64cc0df9189e8395c96b0daaea1aa014ab97b844301892fc44a47240710fac5829ea081604441e6580f83fcdc5e2fb2010585a07d93ec80e792b4e600f3281614cc407331056a61169a540089cfa86e2279ae22090bf2fe10196c9e00738a0a0090c962a59809cabedda1184373b20185838f2b7a50c34004152742c00b9061ef41afd4a8e773dcf55145145d145d174fffda000c03010002000300000010cf4ff1ff00bcb0cef11345f27bab1b097a1491081f7fffc40023110100020102060301000000000000000001001121316141517191a1f081c1f1d1ffda0008010301013f10f58b0da35f229d4fd880b5c45805ce1df8624d3b222d2fb8fecbaab8e74805c5e0a868edc6b7f7a05a5df77796a38703b4533c472ce3a41158ae9ef8f98168597b723def1b68e25780fa896718eb9cfef6e529715acc2459a2f56edae460a9a6f26d6b4d26a1a2920871020a8b5770cd13ffc400231101000201030402030000000000000000010011312141615171a1f08191b1c1d1ffda0008010201013f10922ab37f147c3015ade096538bc9072c20c587be932dc774c152599ad93af53f0f11" //发送二进制文件
(7)AT+CIOTBINSEND=480,"a6da5e1efc42e55064e7ddff0071201b1ebd63c6f5befef98902d69cf3295bb37e5fec07 4d75edd3dfb83792c5388232ac15477756e64333997de573958c4a6a44dc50aa972d9fffc4002310010100010500020203010000000000000111002131415161718191a11040b1e1ffda0008010100013f10fe8d0c394cad617476ff009828374d5f92ff00ccf8b93d76303b224289de4b7af08ba65d0000edee7de263d144b3d7d98ebe3b7a0801adb9611958d3cea69ce2a424352814755663084a0f18abcd8ed894da22edd44c3b52c1fb1e8c4eee094c9c5402ee3ae2197a4ed9b869ae14e3b52505a68e17494217d26f2e8bc5c8e203ae878c37d474743dd6eff989c4e4d04fed5b6687fbad1cbf42a7ba6278aa1d581ca3013bdd69a6df79568bc48877e5e611c261dbc407ba9cf0dc7cedb5b9a06826eed8a6d91a4ba91ab0db37f535db55d2d599b5117aab5b37c90aa8a8da9f52fc65d49050246adcbba22d813f86edf2e340d867e43fbfd4c395d5bb0b6fc778c70a10948fbd77d1c9a014e10e0e8cfdc9b0e7c746f8fbb3b19cf95d47898189621218d243768e12d66cae737a40408410bb3a6f837e4d5fbb8fac0923293a5be2f516b256e153403698e672dadc3cc350b4d86914375caeb936483886be0bc669e01830d7c21c65c8a8" //发送二进制文件
(8)AT+CIOTBINSEND=183,"804415ecd0d7061b8ae4cd3294dbc3f738c2cbac711de8d727bb61efddbc1efe3361a8 a72f3a30a0af906864f70cd484398d46f7bca18359a03837af1be226a684350590d070cc6f1d786e040ec5d3ccdc7 09ddc7ef137e303dd0e221952f036f330c6786c123674ba376b8d5c5802122abd7d98dda1dd531a9e669b3b3b87 7d7c9e6d9166a030910f2ff07ad60e8e2f88b609fcac90c9e9f23cff0031d191d64759124c8eb216f3905d0d721221 321916cd7bc933ffd9" //发送二进制文件,直到结束
(9)AT+CIOTQUIT //停止数据发送,断开连接
发送结束后,登录平台
````