ソースを参照

更新httpaccess文档

lijian 3 年 前
コミット
5ddc5fce5c

+ 2 - 2
README.md

@@ -5,8 +5,8 @@
 * `registry`: 维护平台全局配置和信息的服务 [文档说明](registry.md)
 * `devicemanager`: 设备信息与状态维护服务 [文档说明](devicemanager.md)
 * `controller`: 和设备进行信息交互的路由服务 [文档说明](controller.md)
-* `apiprovider`: 为应用提供REST接口 [文档说明](apiprovider.md)
-* `httpaccess`: 设备Http API接入服务,实现设备登陆,注册,认证等逻辑 [文档说明](httpaccess.md)
+* `apiprovider`: 为应用提供REST接口 [文档说明](services/apiprovider/apiprovider.md)
+* `httpaccess`: 设备Http API接入服务,实现设备登陆,注册,认证等逻辑 [文档说明](services/httpaccess/httpaccess.md)
 * `mqttaccess`: MQTT接入服务 [文档说明](mqttaccess.md)
 * `knowoapi`: 开放平台管理中心api接口服务 [文档说明](knowoapi.md)
 * `fileaccess`: 静态文件服务器 [文档说明](./services/fileaccess/readme.markdown)

+ 139 - 0
services/apiprovider/apiprovider.md

@@ -1,5 +1,21 @@
 ## apiprovicer服务接口文档
 
+## 接口响应约定
+
+```json
+{
+  "code": 0,
+  "message": "",
+  "result": null
+}
+```
+
+**code**为0,为请求成功
+
+**message**保存相关的消息提示
+
+**result**为服务器处理结果
+
 ### 1.服务功能
 
 为厂商app提供平台原生的api调用能力
@@ -149,3 +165,126 @@ _data字符中的具体响应内容是根据产品配置中相应的字段名称
 }
 ```
 
+### 2.5 向指定设备发送指令
+
+* 请求URL: `/application/v1/devices/{identifier}/commands`
+* 请求方法: `POST`
+* 请求参数: `JSON BODY`
+
+|参数|类型|是否必填|说明|
+|---|----|-----|----|
+|identifier|字符串|Y|设备的identifier,注册流程可以得到这个数据|
+
+* BODY体结构: `根据产品的配置文件`
+
+```json
+{
+  "objects": [
+    {
+      "no": 1,
+      "label": "outputState",
+      "part": 1,
+      "status": [
+        {
+          "value_type": 7,
+          "name": "route"
+        },
+        {
+          "value_type": 7,
+          "name": "value"
+        }
+      ]
+    },
+    {
+      "no": 2,
+      "label": "inputState",
+      "part": 1,
+      "status": [
+        {
+          "value_type": 7,
+          "name": "route"
+        },
+        {
+          "value_type": 7,
+          "name": "value"
+        }
+      ]
+    },
+    {
+      "no": 3,
+      "label": "temperature",
+      "part": 1,
+      "status": [
+        {
+          "value_type": 1,
+          "name": "degrees"
+        }
+      ]
+    },
+    {
+      "no": 4,
+      "label": "humidity",
+      "part": 1,
+      "status": [
+        {
+          "value_type": 1,
+          "name": "degrees"
+        }
+      ]
+    }
+  ],
+  "commands": [
+    {
+      "no": 1,
+      "name": "setState",
+      "part": 1,
+      "priority": 0,
+      "params": [
+        {
+          "value_type": 7,
+          "name": "no"
+        },
+        {
+          "value_type": 7,
+          "name": "state"
+        },
+        {
+          "value_type": 8,
+          "name": "subDeviceID"
+        }
+      ]
+    }
+  ],
+  "events": []
+}
+
+```
+
+_例如上面的产品配置信息,commands字段有一个指令名称为setState,参数有三个,则传输的结构体为_
+
+```json
+{
+  "setState": [
+    1,
+    1,
+    1308
+  ]
+}
+```
+
+* 请求Header:
+
+|参数|类型|是否必填|说明|
+|---|----|-----|----|
+|App-Key|字符串|Y|由平台分配的应用AppKey的值|
+|Authorization|字符串|Y|获取AppToken(2.1)接口返回的access_token字段值|
+
+* 请求响应: `JSON`
+
+```json
+{
+  "code": 0,
+  "message": "",
+  "result": null
+}
+```

+ 96 - 0
services/httpaccess/httpaccess.md

@@ -0,0 +1,96 @@
+## httpaccess服务接口文档
+
+### 1.服务功能
+
+为设备接入提供注册、登录接口
+
+### 2.接口文档
+
+|接口URL|请求方法|功能说明|
+---|---|---
+/v1/devices/registration|POST|设备注册
+/v1/devices/authentication|POST|设备认证
+
+### 2.1 设备注册接口
+
+* 请求URL: `/v1/devices/registration`
+* 请求方法: `POST`
+* 请求Header: `无`
+* 请求参数: `JSON BODY`
+
+```json
+{
+  "product_key": "",
+  "device_code": "",
+  "version": "",
+  "module": ""
+}
+```
+
+|字段|类型|是否必填|说明|
+---|---|---|---
+product_key|字符串|Y|平台分配的产品Key
+device_code|字符串|Y|设备序列号,设备唯一硬件标识,由厂商自定义
+version|字符串|Y|固件版本号,由厂商自定义
+module|字符串|Y|设备硬件型号,由厂商自定义,如“esp8266”, "MI3"
+
+* 请求响应:
+
+```json
+{
+  "code": 0,
+  "message": "",
+  "data": {
+    "device_id": 12324,
+    "device_secret": "3d6few3ac31w7a6d3f",
+    "device_key": "34ffffffff",
+    "device_identifier": "64-64-fe4efe"
+  }
+}
+```
+
+|字段|类型|说明|
+---|---|---
+device_id|数字|设备id
+device_secret|字符串|设备密码
+device_key|字符串|设备激活码,用来绑定设备
+device_identifier|字符串|设备标识符
+
+### 2.2 设备登陆
+
+* 请求URL:`/v1/devices/authentication`
+* 请求方式:`POST`
+* 请求header:`无`
+* 请求body:
+
+```json
+{
+  "device_id": 123,
+  "device_secret": "fsfwefewf23r2r32r23rfs",
+  "protocol": "mqtt"
+}
+```
+
+|字段|类型|是否必填|说明|
+---|---|---|---
+device_id|数字|Y|设备Id
+device_secret|字符串|Y|设备密码
+protocol|字符串|Y|协议类型(mqtt,coap)
+
+* 请求响应:
+
+```json
+{
+  "code": 0,
+  "message": "",
+  "data": {
+    "access_token": "3sffefefefefsf",
+    "access_addr": "202.114.0.242:8080"
+  }
+}
+```
+
+|字段|类型|说明|
+---|---|---
+access_token|字符串|设备token
+access_addr|字符串|接入服务器地址+端口

+ 5 - 5
services/httpaccess/response.go

@@ -1,12 +1,12 @@
 package main
 
-// common response fields
+// Common common response fields
 type Common struct {
 	Code    int    `json:"code"`
 	Message string `json:"message"`
 }
 
-// device register response data field
+// DeviceRegisterData device register response data field
 type DeviceRegisterData struct {
 	DeviceId         int64  `json:"device_id"`
 	DeviceSecret     string `json:"device_secret"`
@@ -14,19 +14,19 @@ type DeviceRegisterData struct {
 	DeviceIdentifier string `json:"device_identifier"`
 }
 
-// device register response
+// DeviceRegisterResponse device register response
 type DeviceRegisterResponse struct {
 	Common
 	Data DeviceRegisterData `json:"data"`
 }
 
-// device auth response data field
+// DeviceAuthData device auth response data field
 type DeviceAuthData struct {
 	AccessToken string `json:"access_token"`
 	AccessAddr  string `json:"access_addr"`
 }
 
-// device auth response
+// DeviceAuthResponse device auth response
 type DeviceAuthResponse struct {
 	Common
 	Data DeviceAuthData `json:"data"`