├── .gitignore
├── Application Developement Documents
├── Device Sharing APIs.md
├── Error Code Explanation.md
├── The APIs for User Identity.md
└── image
│ ├── deviceShare.jpg
│ ├── diao_yong_ping_zheng.jpg
│ ├── emailRegister.jpg
│ ├── resetPassword.jpg
│ ├── userLogin.jpg
│ └── zhao_hui_mi_ma.jpg
├── README.md
├── 应用端开发文档
├── README.md
├── XLINK 数据端点概览.md
├── image
│ ├── Android SDK目录结构.png
│ ├── reg.png
│ ├── 云端连接.png
│ ├── 企业ID.png
│ ├── 内网连接.png
│ ├── 分享流程.jpg
│ ├── 添加产品.png
│ ├── 登录.png
│ └── 集成流程.png
├── 其他平台
│ ├── Windows APP SDK集成文档.md
│ └── image
│ │ ├── cloud_connect.png
│ │ ├── local_init_device_v2.png
│ │ ├── local_scan_by_pid.png
│ │ └── sub_dev_by_ack.png
├── 应用端RESTful接口文档
│ ├── Home管理接口.md
│ ├── README.md
│ ├── XFile管理接口.md
│ ├── image
│ │ ├── diao_yong_ping_zheng.jpg
│ │ └── zhao_hui_mi_ma.jpg
│ ├── 应用端管理.md
│ ├── 数据存储接口.md
│ ├── 用户扩展属性接口.md
│ ├── 用户消息接口.md
│ ├── 用户身份接口.md
│ ├── 离线推送接口.md
│ ├── 第三方用户身份接入.md
│ ├── 获取接口调用凭据.md
│ ├── 设备功能接口.md
│ └── 错误码说明.md
├── 微信智能硬件接入指南.md
└── 微信智能硬件接入指南V2.md
├── 物联平台管理接口文档
├── README.md
├── XLINK二维码规范.md
├── 个性化设置.md
├── 产品与设备管理接口.md
├── 仪表盘接口.md
├── 企业信息管理接口.md
├── 企业日志服务接口.md
├── 告警服务接口.md
├── 大客户接口.md
├── 大客户管理接口.md
├── 子设备管理接口.md
├── 导出CSV接口.md
├── 常见问题解答.md
├── 应用管理接口.md
├── 微信应用-设备授权管理.md
├── 授权管理.md
├── 数据存储管理接口.md
├── 数据端点与通知告警.md
├── 数据统计分析接口.md
├── 数据转发服务器验证规则.md
├── 文件管理接口.md
├── 标签管理接口.md
├── 消息推送管理.md
├── 用户管理接口.md
├── 经销商管理接口.md
├── 虚拟设备接口.md
├── 设备升级管理接口.md
├── 设备快照功能接口.md
├── 设备控制接口.md
├── 设备数据转发流出数据格式.md
├── 设备数据转发配置接口.md
└── 邮件模版.md
├── 硬件模拟器
├── README.md
└── img
│ ├── log.png
│ ├── 主页.png
│ ├── 安装.png
│ ├── 数据端点.png
│ ├── 数据端点值.png
│ ├── 断线重连.png
│ ├── 流程图.jpg
│ ├── 添加产品.png
│ ├── 添加设备.png
│ ├── 运行原理1.jpg
│ ├── 运行原理2.jpg
│ ├── 透传模式输入.png
│ └── 重置设备.png
├── 硬件模拟器_v3
├── README.md
├── images
│ ├── datapoint.png
│ ├── device_info.png
│ ├── localapps.png
│ ├── mainwindow.png
│ ├── ota1.png
│ ├── ota2.png
│ ├── ota3.png
│ └── pipe_sync.png
└── win32
│ └── XlinkDeviceSimulator_v3.zip
└── 设备端开发文档
├── 1.XlinkSDK规范
├── 1.SDK介绍.md
├── 2.SDK使用流程.md
├── 3.硬件SDK接口文档.md
├── 4.数据端点文档.md
├── README.md
├── SDK及固件
│ ├── AT指令V1.3.pdf
│ ├── AT指令透传固件(LPB100,115200,8,N,1).7z
│ ├── AT指令透传固件(LPB100,9600,8,N,1).7z
│ ├── AT指令透传固件(LPB105,115200,8,N,1).7z
│ ├── AT指令透传固件(LPB105,9600,8,N,1).7z
│ ├── AT指令透传固件(LPT100,115200,8,N,1).7z
│ ├── AT指令透传固件(LPT100,9600,8,N,1).7z
│ ├── AT指令透传固件(LPT200,115200,8,N,1).7z
│ ├── AT指令透传固件(LPT200,9600,8,N,1).7z
│ ├── README.md
│ ├── Xlink SDK V24002(LPB100).7z
│ ├── Xlink-Demo-AT-V24002(HFLPB100).7z
│ ├── Xlink-Demo-V24002(HFLPB100).7z
│ └── xlink-demo-V2.apk
└── images
│ ├── SDK结构.bmp
│ ├── 数据端点交互过程.jpg
│ ├── 数据端点流程图.bmp
│ ├── 流程图.bmp
│ ├── 硬件接入流程图.jpg
│ ├── 网关模式.bmp
│ └── 设备模式.bmp
├── 2.设备通讯协议规范.md
├── 3.常见问题和解答.md
├── README.md
├── 其他平台
└── Windows SDK集成文档.md
└── 设备端REST接口开发文档.md
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | .DS_Store
3 | 物联平台管理接口文档/Home管理接口.md
4 |
--------------------------------------------------------------------------------
/Application Developement Documents/Device Sharing APIs.md:
--------------------------------------------------------------------------------
1 | # Device Sharing APIs
2 |
3 | With device sharing api, it allow user to manage sharing control, including accept, deny, cancel,etc.
4 |
5 |
6 |
7 | ## At a Glance
8 |
9 | 1. [Device Sharing](#device_share)
10 | 2. [Cancel Sharing](#device_share_cancel)
11 | 3. [Accept Sharing](#accept_share)
12 | 4. [Deny Sharing](#deny_share)
13 | 5. [Retrieve Sharing Device List](#share_list)
14 | 6. [Delete Sharing History](#delete_share)
15 |
16 |
17 | ## Interface Details
18 |
19 | ### **1.Device Sharing**
20 |
21 |
22 | User can share devices to other users, allow other users to control certain devices. Sharer will be the manager, other user will be general users. Only device manager can share.
23 |
24 |
25 |
26 | #### ***Device Sharing Workflow***
27 | Sharer and User:
28 | 1.Sharer send invitation to a certain User
29 | 2.System will create a record in Sharing Request List in both Sharer and User,the request will be invalid after a certain period.
30 | 3.User select [Accept] or [Deny] from the Sharing Request List.
31 | 4.Sharer are able to cancel invitation from the Sharing Request List before User accept or deny.
32 | 5.User accept invitation and share the same device as the Sharer.
33 |
34 |
35 |
36 | ##### ***3 Ways To Share:***
37 |
38 | * Share via User ID
39 | * QR Code Sharing
40 | * Share Via Email
41 |
42 |
43 | ##### ***About Device Manager***
44 |
45 | Only register and subscribe via Xlink Platform SDK can become a device manager.User register a new device to become the device manager.
46 |
47 | 
48 |
49 | **Request**
50 |
51 |
52 | URL
53 |
54 | POST /v2/share/device
55 |
56 | Header
57 |
58 | Content-Type : "application/json"
59 | Access-Token : "Access Token"
60 |
61 | Content
62 |
63 | {
64 | "device_id" : Device ID,
65 | "user" : "User Account Name",
66 | "expire" : 7200,
67 | "mode" : "Sharing Mode"
68 | }
69 |
70 |
71 | Variables | Required | Description
72 | ---- | ---- | ----
73 | device_id | Yes | Sharing Device ID
74 | user | NO | Whom to share;Can be a phone number or an email address (If share via QR code or email, only invite code is required.)
75 | expire | Yes | Request valid period, in seconds
76 | mode | Yes | Sharing Mode,enumeration value,See [Appendix](#share_mode)
77 |
78 | **Response**
79 |
80 | Header
81 |
82 | HTTP/1.1 200 OK
83 |
84 | Content
85 |
86 | {
87 | "invite_code" : "Invite code"
88 | }
89 |
90 |
91 | ### **2.Cancel Sharing**
92 |
93 |
94 |
95 | Device manager can cancel an invitation via this interface.
96 |
97 |
98 | **Request**
99 |
100 | URL
101 |
102 | POST /v2/share/device/cancel
103 |
104 | Header
105 |
106 | Content-Type : "application/json"
107 | Access-Token : "Access Token"
108 |
109 | Content
110 |
111 | {
112 | "invite_code" : "Invite Code",
113 | }
114 |
115 | **Response**
116 |
117 | Header
118 |
119 | HTTP/1.1 200 OK
120 |
121 | Content
122 |
123 | Null
124 |
125 |
126 |
127 | ### **3.Accepting Sharing**
128 |
129 |
130 | User accept sharing.
131 |
132 | **Requeset**
133 |
134 | URL
135 |
136 | POST /v2/share/device/accept
137 |
138 | Header
139 |
140 | Content-Type : "application/json"
141 | Access-Token : "Access Token"
142 |
143 | Content
144 |
145 | {
146 | "invite_code" : "Invite Code"
147 | }
148 |
149 | **Response**
150 |
151 | Header
152 |
153 | HTTP/1.1 200 OK
154 |
155 | Content
156 |
157 | NULL
158 |
159 |
160 |
161 | ### **4.Deny Sharing**
162 |
163 |
164 | User deny sharing.
165 |
166 | **Request**
167 |
168 | URL
169 |
170 | POST /v2/share/device/deny
171 |
172 | Header
173 |
174 | Content-Type : "application/json"
175 | Access-Token : "Access Token"
176 |
177 | Content
178 |
179 | {
180 | "invite_code" : "Invite Code",
181 | "reason":"Reason user deny sharing"
182 | }
183 |
184 |
185 | Variables | Required | Description
186 | ---- | ---- | ----
187 | invite_code | Yes | Invite Code
188 | reason | No | Reason user deny sharing
189 |
190 | **Response**
191 |
192 | Header
193 |
194 | HTTP/1.1 200 OK
195 |
196 | Content
197 |
198 | NULL
199 |
200 |
201 |
202 | ### **5.Retrieve Sharing Device List**
203 |
204 |
205 |
206 | Device Manager and user can check devices sharing list: Device shared to others and shared by others.
207 |
208 | **Request**
209 |
210 | URL
211 |
212 | GET /v2/share/device/list
213 |
214 | Header
215 |
216 | Content-Type : "application/json"
217 | Access-Token : "Access Token"
218 |
219 | Content
220 | 无
221 |
222 | **Response**
223 |
224 | Header
225 |
226 | HTTP/1.1 200 OK
227 |
228 | Content
229 |
230 | [
231 | {
232 | "invite_code" : Invite Code,
233 | "from_id" : Sharer ID,
234 | "from_user" : Sharer Account,
235 | "to_id" : User ID(to whom),
236 | "to_user" : User Account(to whom),
237 | "device_id" : Device ID,
238 | "state" : Sharing Status
239 | "create_date" : Share create time,
240 | "expire_date" : Share expire time,
241 | },
242 | ]
243 |
244 | Variables | Required | Description
245 | ---- | ---- | ----
246 | invite_code | Yes | Invite Code
247 | from_id | Yes | Sharer Id(Device Manager's ID)
248 | from_user | Yes | Sharer Account(Device Manger's ID)
249 | to_id | Yes | User ID(Share to Whom)
250 | to_user | Yes | User Account Name(Share to Whom)
251 | device_id | Yes | Device ID
252 | state | Yes | Sharing Status;See[Appendix](#share_status)
253 | create_date | Yes | Share create time, for example:2015-10-09T08 : 15 : 40.843Z
254 | expire_date | Yes | Share expire time, for example:2015-10-09T08 : 15 : 40.843Z
255 |
256 |
257 | ### **6.Delete Sharing History**
258 |
259 |
260 | Device Manager or User delete sharing history
261 |
262 | **Request**
263 |
264 | URL
265 |
266 | DELETE /v2/share/device/delete/{invite_code}
267 | Header
268 |
269 | Content-Type : "application/json"
270 | Access-Token : "Access Token"
271 |
272 | Content
273 |
274 | NULL
275 |
276 | **Response**
277 |
278 | Header
279 |
280 | HTTP/1.1 200 OK
281 |
282 | Content
283 |
284 | NULL
285 |
--------------------------------------------------------------------------------
/Application Developement Documents/Error Code Explanation.md:
--------------------------------------------------------------------------------
1 | # Error Code Explanation
2 |
3 |
4 | Xlink platform provide RESTful style interface for developers, HTTP Response Code allow developers to understand the connectivity of the interface.
5 |
6 | Error Code Explanation:
7 |
8 | |HTTP Response| Explanation
9 | | --- | --- |
10 | | HTTP/1.1 200 OK | Request success, returned correct value
11 | | HTTP/1.1 400 Bad Request | Parameter error
12 | | HTTP/1.1 403 Forbidden | Interface authorization error
13 | | HTTP/1.1 404 Not Found | Cannot locate document
14 | | HTTP/1.1 503 Service Unavailable | Server exception
15 |
16 |
17 | **Unless HTTP Response Code is 200 and return correct data, other Response Code will be in followed format:**
18 |
19 | {"error":{"code":"error code","msg":"error explanation"}}
20 |
21 |
22 | #### ***Error Code Format:{HTTP return value}+{error code}***
23 |
24 |
25 | **Error Code Explanation: 400**
26 |
27 |
28 |
29 | | Code | Error Code Explanation|
30 | | --- | ---
31 | | 4001001 | Requested variable verification failed
32 | | 4001002 | Requested variable null.
33 | | 4001003 | SMS verification code not found
34 | | 4001004 | Invalid SMS verification code
35 | | 4001005 | This mobile number has already been registered
36 | | 4001006 | This email address has already been registered
37 | | 4001007 | Wrong password
38 | | 4001008 | Account illegal
39 | | 4001009 | Enterprise member account status illegal
40 | | 4001010 | Refresh-Token illegal
41 | | 4001011 | Unknown member type
42 | | 4001012 | Only Administrator can send invitation
43 | | 4001013 | Unable to edit other member's information
44 | | 4001014 | Unable to delete your own account
45 | | 4001015 | Unknown product connectivity type
46 | | 4001016 | Unable to delete published product
47 | | 4001017 | Firmware version exist
48 | | 4001018 | Data point unknown data type
49 | | 4001019 | Data point index has exist
50 | | 4001020 | Unable to delete published data point
51 | | 4001021 | MAC address has already exist of this product
52 | | 4001022 | Unable to delete activated device
53 | | 4001023 | Extension properties Key were default property
54 | | 4001024 | Device extensions reached limit
55 | | 4001025 | Unable to add existed extension properties
56 | | 4001026 | Unable to update not existed extension properties
57 | | 4001027 | Variable name illegal
58 | | 4001028 | Email verification code does not exist
59 | | 4001029 | Wrong email verification code
60 | | 4001030 | User account status illegal
61 | | 4001031 | User phone number unverified
62 | | 4001032 | User email address unverified
63 | | 4001033 | Device has already been subscribed
64 | | 4001034 | User did not subscribed the device
65 | | 4001035 | Auto update task already exist
66 | | 4001036 | Updating status unknown
67 | | 4001037 | Initial version updating task already exist
68 | | 4001038 | Device activation failed
69 | | 4001039 | Device verification failed
70 | | 4001041 | Wrong Subscribed device verification code
71 | | 4001042 | Authentic name exist
72 | | 4001043 | Warning rules name has already exist
73 | | 4001045 | Data table name has already exist
74 | | 4001046 | Firmware oversized
75 | | 4001047 | APN licence file oversized
76 | | 4001048 | APP did not enable APN
77 | | 4001049 | Product is not available to register
78 | | 4001050 | Followed email template type had exist
79 | | 4001051 | Lack of email template main text parameter
80 |
81 |
82 |
83 | **Error Code Explanation: 403**
84 |
85 | | Code | Error Code Explanation|
86 | | --- | ---
87 | | 4031001 | Access denied
88 | | 4031002 | Access denied, need Access-Token
89 | | 4031003 | Invalid Access-Token
90 | | 4031004 | Require Enterprise allocate permission
91 | | 4031005 | Require Enterprise admin permission
92 | | 4031006 | Require data operate permission
93 | | 4031007 | Private data access denied
94 | | 4031008 | Sharing relation has been canceled
95 | | 4031009 | Sharing relation has already been accepted
96 | | 4031010 | Unable to operate, unable to find subscribed devices
97 |
98 |
99 | **Error Code Explanation: 404**
100 |
101 |
102 | | Code | Error Code Explanation|
103 | | --- | ---
104 | | 4041001 | URL not found
105 | | 4041002 | Enterprise member account does not exist
106 | | 4041003 | Enterprise member does not exist
107 | | 4041004 | Activated enterprise member email address does not exist
108 | | 4041005 | Product does not exist
109 | | 4041006 | Product firmware does not exist
110 | | 4041007 | Data point does not exist
111 | | 4041008 | Device does not exist
112 | | 4041009 | Device extending property does not exist
113 | | 4041010 | Enterprise does not exist
114 | | 4041011 | User does not exist
115 | | 4041012 | User extension property does not exist
116 | | 4041013 | Upgrading task does not exist
117 | | 4041014 | Third party empower does not exist
118 | | 4041015 | Warning rule does not exist
119 | | 4041016 | Data table does not exist
120 | | 4041017 | Data does not exist
121 | | 4041018 | Sharing resource does not exist
122 | | 4041019 | Enterprise email address does not exist
123 | | 4041020 | App does not exist
124 | | 4041021 | Product forward rule does not exist
125 | | 4041022 | Email template does not exist
126 |
127 |
128 | **Error Code Explanation: 503**
129 |
130 | | Code | Error Code Explanation|
131 | | --- | ---
132 | | 5031001 |Server exception|
133 |
--------------------------------------------------------------------------------
/Application Developement Documents/image/deviceShare.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/Application Developement Documents/image/deviceShare.jpg
--------------------------------------------------------------------------------
/Application Developement Documents/image/diao_yong_ping_zheng.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/Application Developement Documents/image/diao_yong_ping_zheng.jpg
--------------------------------------------------------------------------------
/Application Developement Documents/image/emailRegister.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/Application Developement Documents/image/emailRegister.jpg
--------------------------------------------------------------------------------
/Application Developement Documents/image/resetPassword.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/Application Developement Documents/image/resetPassword.jpg
--------------------------------------------------------------------------------
/Application Developement Documents/image/userLogin.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/Application Developement Documents/image/userLogin.jpg
--------------------------------------------------------------------------------
/Application Developement Documents/image/zhao_hui_mi_ma.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/Application Developement Documents/image/zhao_hui_mi_ma.jpg
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## 云智易物联平台开发说明
2 |
3 |
4 | ### 概述
5 |
6 | 云智易物联平台的开放接口分为设备接入、APP开发、平台对接三个主要部分。
7 |
8 |
9 | ### 一、设备接入
10 |
11 | 使用云智易提供的嵌入式SDK,可以方便地将设备接入到云端平台,实现远程控制、远程管理、数据采集、OTA等相关的功能。
12 |
13 | #### 设备接入指引
14 |
15 | 1. 开发者可以通过[嵌入式SDK介绍](https://github.com/xlink-corp/xlink-sdk/blob/master/设备端开发文档/1.XlinkSDK规范/1.SDK介绍.md)了解SDK的基本概念;
16 | 2. 通过[嵌入式SDK使用流程](https://github.com/xlink-corp/xlink-sdk/blob/master/设备端开发文档/1.XlinkSDK规范/2.SDK使用流程.md)了解硬件接入的具体流程;
17 | 3. 开发者可以通过[C语言集成接口](https://github.com/xlink-corp/xlink-sdk/blob/master/设备端开发文档/1.XlinkSDK规范/3.硬件SDK接口文档.md)完成对具体硬件的功能开发。
18 |
19 | ### 二、APP开发
20 |
21 |
22 | 通过云智易提供的APP SDK,开发者可以快速实现对物联设备的远程访问控制。
23 | 云智易平台的APP SDK分为种类型的接口:
24 |
25 | * Android和iOS原生SDK,用于实现新设备的扫描、添加、访问和控制,及云端的连接和通讯等功能。
26 | * RESTFul API,提供了如[用户注册](https://github.com/xlink-corp/xlink-sdk/blob/master/%E5%BA%94%E7%94%A8%E7%AB%AF%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/%E5%BA%94%E7%94%A8%E7%AB%AFRESTful%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E6%8E%A5%E5%8F%A3.md#email_register)、[认证](https://github.com/xlink-corp/xlink-sdk/blob/master/%E5%BA%94%E7%94%A8%E7%AB%AF%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/%E5%BA%94%E7%94%A8%E7%AB%AFRESTful%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E6%8E%A5%E5%8F%A3.md#user_auth),以及[设备分享](https://github.com/xlink-corp/xlink-sdk/blob/master/%E5%BA%94%E7%94%A8%E7%AB%AF%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/%E5%BA%94%E7%94%A8%E7%AB%AFRESTful%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E8%AE%BE%E5%A4%87%E5%88%86%E4%BA%AB%E6%8E%A5%E5%8F%A3.md)等功能接口。
27 |
28 |
29 | #### APP接入指引
30 |
31 | 1. 开发者登录云智易[企业管理台](https://admin.xlink.cn),注册一个企业帐号;
32 | 2. 在管理台中创建一个产品;
33 | 3. 参考[APP iOS SDK接口文档](https://github.com/xlink-corp/xlink-sdk/blob/master/%E5%BA%94%E7%94%A8%E7%AB%AF%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/APP%20iOS%20SDK%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3.md)以及[APP Android SDK接口文档](https://github.com/xlink-corp/xlink-sdk/blob/master/%E5%BA%94%E7%94%A8%E7%AB%AF%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/APP%20Android%20SDK%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3.md)开发对应的APP程序。
34 | 4. 参考[微信智能硬件接入指南](https://github.com/xlink-corp/xlink-sdk/blob/master/%E5%BA%94%E7%94%A8%E7%AB%AF%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/%E5%BE%AE%E4%BF%A1%E6%99%BA%E8%83%BD%E7%A1%AC%E4%BB%B6%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97.md),开发者可以让硬件方便的接入微信硬件平台。
35 |
36 |
37 | ### 三、平台对接
38 |
39 | 云智易平台具备平台级的对接能力,提供了近200个RESTful接口。企业可以按需将云智易提供的物联网平台功能,如[设备管理](https://github.com/xlink-corp/xlink-sdk/blob/master/%E7%89%A9%E8%81%94%E5%B9%B3%E5%8F%B0%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E4%BA%A7%E5%93%81%E4%B8%8E%E8%AE%BE%E5%A4%87%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3.md)、[用户管理](https://github.com/xlink-corp/xlink-sdk/blob/master/%E7%89%A9%E8%81%94%E5%B9%B3%E5%8F%B0%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E7%94%A8%E6%88%B7%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3.md)、[设备控制](https://github.com/xlink-corp/xlink-sdk/blob/master/%E7%89%A9%E8%81%94%E5%B9%B3%E5%8F%B0%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E8%AE%BE%E5%A4%87%E6%8E%A7%E5%88%B6%E6%8E%A5%E5%8F%A3.md)、[数据收集](https://github.com/xlink-corp/xlink-sdk/blob/master/%E7%89%A9%E8%81%94%E5%B9%B3%E5%8F%B0%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E6%95%B0%E6%8D%AE%E7%BB%9F%E8%AE%A1%E5%88%86%E6%9E%90%E6%8E%A5%E5%8F%A3.md),集成到自有的业务系统中。
40 |
41 | #### 平台对接指引
42 |
43 | 1. 开发者登录云智易[企业管理台](https://admin.xlink.cn),注册一个企业帐号;
44 | 2. 通过平台的授权管理,创建一个AccessID和Key,通过平台[授权接口](https://github.com/xlink-corp/xlink-sdk/blob/master/%E7%89%A9%E8%81%94%E5%B9%B3%E5%8F%B0%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E6%8E%88%E6%9D%83%E7%AE%A1%E7%90%86.md#auth),获取到访问云智易平台能力的Token。
45 | 3. 参考[物联平台管理接口文档](https://github.com/xlink-corp/xlink-sdk/tree/master/物联平台管理接口文档),按需集成相关的接口功能。
46 |
47 |
--------------------------------------------------------------------------------
/应用端开发文档/README.md:
--------------------------------------------------------------------------------
1 | # 应用端相关SDK接入文档请参考如下链接: #
2 |
3 |
4 | - iOS SDK 、Demo源码、文档:https://github.com/xlink-corp/ios-sdk
5 | - Android SDK 、Demo源码、文档:https://github.com/xlink-corp/android-sdk
6 | - JS SDK 、Demo源码、文档:https://github.com/xlink-corp/JS-SDK
7 | - 设备端 SDK 、Demo源码、文档:https://github.com/xlink-corp/device-sdk
8 | - 硬件模拟器:https://github.com/xlink-corp/device-simulator
--------------------------------------------------------------------------------
/应用端开发文档/image/Android SDK目录结构.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/应用端开发文档/image/Android SDK目录结构.png
--------------------------------------------------------------------------------
/应用端开发文档/image/reg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/应用端开发文档/image/reg.png
--------------------------------------------------------------------------------
/应用端开发文档/image/云端连接.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/应用端开发文档/image/云端连接.png
--------------------------------------------------------------------------------
/应用端开发文档/image/企业ID.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/应用端开发文档/image/企业ID.png
--------------------------------------------------------------------------------
/应用端开发文档/image/内网连接.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/应用端开发文档/image/内网连接.png
--------------------------------------------------------------------------------
/应用端开发文档/image/分享流程.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/应用端开发文档/image/分享流程.jpg
--------------------------------------------------------------------------------
/应用端开发文档/image/添加产品.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/应用端开发文档/image/添加产品.png
--------------------------------------------------------------------------------
/应用端开发文档/image/登录.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/应用端开发文档/image/登录.png
--------------------------------------------------------------------------------
/应用端开发文档/image/集成流程.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/应用端开发文档/image/集成流程.png
--------------------------------------------------------------------------------
/应用端开发文档/其他平台/image/cloud_connect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/应用端开发文档/其他平台/image/cloud_connect.png
--------------------------------------------------------------------------------
/应用端开发文档/其他平台/image/local_init_device_v2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/应用端开发文档/其他平台/image/local_init_device_v2.png
--------------------------------------------------------------------------------
/应用端开发文档/其他平台/image/local_scan_by_pid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/应用端开发文档/其他平台/image/local_scan_by_pid.png
--------------------------------------------------------------------------------
/应用端开发文档/其他平台/image/sub_dev_by_ack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/应用端开发文档/其他平台/image/sub_dev_by_ack.png
--------------------------------------------------------------------------------
/应用端开发文档/应用端RESTful接口文档/README.md:
--------------------------------------------------------------------------------
1 | # 应用端RESTful接口文档
2 |
3 | * 云智易提供了RESTful API接口,APP开发者可通过本系列接口完成对云智易用户相关的接入。
4 |
5 |
6 | ## **本系列文档目录**
7 |
8 |
9 | ### [获取调用凭证](#https://github.com/xlink-corp/xlink-sdk/blob/master/%E5%BA%94%E7%94%A8%E7%AB%AF%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/%E5%BA%94%E7%94%A8%E7%AB%AFRESTful%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E8%8E%B7%E5%8F%96%E6%8E%A5%E5%8F%A3%E8%B0%83%E7%94%A8%E5%87%AD%E6%8D%AE.md)
10 |
11 | ### [用户身份接口](#https://github.com/xlink-corp/xlink-sdk/blob/master/%E5%BA%94%E7%94%A8%E7%AB%AF%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/%E5%BA%94%E7%94%A8%E7%AB%AFRESTful%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E6%8E%A5%E5%8F%A3.md)
12 |
13 | ### [设备功能接口](#https://github.com/xlink-corp/xlink-sdk/blob/master/%E5%BA%94%E7%94%A8%E7%AB%AF%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/%E5%BA%94%E7%94%A8%E7%AB%AFRESTful%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E8%AE%BE%E5%A4%87%E5%8A%9F%E8%83%BD%E6%8E%A5%E5%8F%A3.md)
14 |
15 | ### [设备分享接口](#https://github.com/xlink-corp/xlink-sdk/blob/master/%E5%BA%94%E7%94%A8%E7%AB%AF%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/%E5%BA%94%E7%94%A8%E7%AB%AFRESTful%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E8%AE%BE%E5%A4%87%E5%88%86%E4%BA%AB%E6%8E%A5%E5%8F%A3.md)
16 |
17 | ### [用户消息接口](#https://github.com/xlink-corp/xlink-sdk/blob/master/%E5%BA%94%E7%94%A8%E7%AB%AF%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/%E5%BA%94%E7%94%A8%E7%AB%AFRESTful%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E7%94%A8%E6%88%B7%E6%B6%88%E6%81%AF%E6%8E%A5%E5%8F%A3.md)
18 |
19 |
20 |
21 | ## **关于RESTfule接口说明**
22 |
23 |
24 | ### **HTTP请求头部扩展字段:**
25 |
26 | * 调用云智易平台RESTful接口需要满足特定的HTTP扩展字段。
27 |
28 | 字段 | 说明
29 | ---- | ----
30 | Access-Token | 应用前端访问RESTful接口的调用凭证,通过用户[登陆认证](https://xlink.gitbooks.io/sdk-app/content/app_user_restful/yonghu_shen_fen_jie_kou.html)获取
31 |
32 |
33 | ## **RESTful接口返回错误码**
34 |
35 | * 应用端开发者调用RESTful接口后根据HTTP响应的状态码来确定是否请求成功。
36 |
37 | 请看[错误码说明](https://xlink.gitbooks.io/sdk-app/content/app_user_restful/cuowuma_shuo_ming.html)。
38 |
39 |
40 |
--------------------------------------------------------------------------------
/应用端开发文档/应用端RESTful接口文档/XFile管理接口.md:
--------------------------------------------------------------------------------
1 |
2 | # XFile管理接口
3 |
4 | XFile管理接口是用于管理用户企业资源存储与下载,当前全部资源为公共读写
5 |
6 | # **接口概览**
7 | 1. [XFile上传](#upload)
8 | 2. [XFile下载](#download)
9 | 3. [获取xfile文档列表](#get_xfile_list)
10 |
11 |
12 | # **接口详情**
13 |
14 | ### **1. XFile上传**
15 |
16 | XFile文件上传接口用于企业或者用户上传资源, 文件被存与文件存储运营商服务器, 目前有阿里云oss或者腾讯云cos,返回文件上传记录信息, 企业管理员以及用户可调用。
17 |
18 |
19 | **Request**
20 |
21 | URL
22 |
23 | POST /v2/xfile/upload?content=xxxx
24 |
25 | | 字段 | 是否必须 | 描述 |
26 | | --- | --- | --- |
27 | | content | 是 | 请求参数,文件类型type和公共读public_read的base64,如base64({"type":"jpg","public_read":true,"file_name":"文件名称"}) |
28 | | type|是| 文件类型,比如jpg,apk等。|
29 | | public_read | 否 | 公共读,true or false|
30 | | file_name | 否 | 文件名称|
31 |
32 | Header
33 |
34 | Access-Token:"调用凭证"
35 |
36 | Content
37 |
38 | 使用POST发送文件方式发送
39 |
40 | **Response**
41 |
42 | Header
43 |
44 | HTTP/1.1 200 OK
45 |
46 | Content
47 |
48 | {
49 | "id":"xfile记录id",
50 | "download_url":"XFile资源地址"
51 | }
52 |
53 |
54 | ### **XFile下载(待定接口)**
55 |
56 | XFile文件下载接口用于企业管理员或用户下载资源, 通过API Server以HTTP 302方式向文件存储运营商下载资源, 目前有阿里云oss或者腾讯云cos,返回下载文件流, 企业管理员以及用户可调用
57 |
58 |
59 | **Request**
60 |
61 | URL
62 |
63 | GET /v2/xfile/download?sign=xxxxxx
64 |
65 | | 字段 | 是否必须 | 描述 |
66 | | --- | --- | --- |
67 | | sign | 是 | 初步定为上传时记录id |
68 |
69 | Header
70 |
71 | Access-Token:"调用凭证"
72 |
73 | Content
74 |
75 | 无
76 |
77 | **Response**
78 |
79 | Header
80 |
81 | HTTP/1.1 200 OK
82 |
83 | Content
84 |
85 | {
86 | "url":"云服务器商对应的资源地址"
87 | }
88 |
89 | ### **获取xfile文档列表**
90 |
91 | 获取上传文件的列表
92 |
93 | **Request**
94 |
95 | URL
96 |
97 | POST /v2/xfile_list
98 |
99 | Header
100 |
101 | Access-Token:"调用凭证"
102 |
103 | Content
104 |
105 | {
106 | "offset": "请求列表的偏移量",
107 | "limit": "请求数量",
108 | "query": {
109 | "filed1": {
110 | "$like": "字段值"
111 | },
112 | "filed3": {
113 | "$lt": "字段值"
114 | }
115 | },
116 | "order": {
117 | "filed1": "desc",
118 | "filed2": "asc"
119 | }
120 | }
121 |
122 | 字段 | 是否必须 | 描述
123 | ---- | ---- | ----
124 | offset | 否 | 从某个偏移量开始请求,默认为0
125 | limit | 否 | 请求的条目数量,默认为10
126 | order | 否 | 可以指定通过设备默认的某个字段排序,desc降序,asc升序
127 | filter |否 | 字段过滤,集合类型,可以指定返回结果列表的字段,可以
包含扩展属性字段
128 | query | 否 | 查询条件,可以根据不同字段加上不同的比较指令来查询,查
询条件字段包含设备所有默认字段,不支持扩展属性字段,支
持比较指令包含如下:
$in:包含于该列表任意一个值
$lt:小于该字段值
$lte:小于或等于字段值
$gt:大于该字段值
$gte:大于或等于该字段值
$like:模糊匹配该字段值
129 |
130 | #### Response ####
131 |
132 | *Header*
133 |
134 | HTTP/1.1 200 OK
135 |
136 | *Content*
137 |
138 | {
139 | "count":"",
140 | "list":[
141 | {
142 | "id" : "文件ID",
143 | "name":"文件名",
144 | "md5" : "文件MD5",
145 | "size" : 5839,
146 | "ower" : "文件上传者",
147 | "ower_type":"上传者类型"
148 | "public_read" : true,
149 | "create_time" : "创建时间",
150 | "xlink_url" : "云智易链接地址",
151 | "real_url" : "文件真实存放的url"
152 | }
153 | ]
154 | }
155 |
156 |
157 | 字段 | 是否必须 | 描述
158 | ---- | ---- | ----
159 | id | 是 | 文件ID
160 | name | 是 | 文件名
161 | md5 | 是 | 文件的MD5值
162 | xlink_url | 是 | 云智易链接地址
163 | real_url | 是 | 文件真实存放的url
164 | size | 是 | 文件大小
165 | ower | 是 | 文件上传者
166 | ower_type | 是 | 见[文件上传者类型](#owner_type)
167 | public_read | 是 | 是否公共读
168 | create_time | 是 | 文件上传时间,例 2016-09-09T03:55:05.537Z
169 |
170 |
171 | ### **文件上传者类型**
172 |
173 | 枚举值 | 说明
174 | ---- | ----
175 | 1 | 用户拥有
176 | 2 | 管理员拥有
177 | 3 | 设备拥有
--------------------------------------------------------------------------------
/应用端开发文档/应用端RESTful接口文档/image/diao_yong_ping_zheng.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/应用端开发文档/应用端RESTful接口文档/image/diao_yong_ping_zheng.jpg
--------------------------------------------------------------------------------
/应用端开发文档/应用端RESTful接口文档/image/zhao_hui_mi_ma.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/应用端开发文档/应用端RESTful接口文档/image/zhao_hui_mi_ma.jpg
--------------------------------------------------------------------------------
/应用端开发文档/应用端RESTful接口文档/应用端管理.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # 应用端管理
4 |
5 | 应用端管理面向应用前段,用于提供存取必要信息的一系列接口,主要有版本管理、最新SplashWnd图片获取等接口。
6 |
7 | ## 接口概览
8 |
9 | 1. [获取Android APK最新版本](#Android_APK_GET)
10 | 2. [获取SplashWnd图片列表](#get_SplashWnd_list)
11 |
12 | ## 接口详情
13 |
14 | ### 1. 获取Android APK最新版本
15 |
16 | Android应用获取最新版本。
17 |
18 | 文档详情转至[获取Android APK最新版本](https://github.com/xlink-corp/xlink-sdk/blob/master/%E7%89%A9%E8%81%94%E5%B9%B3%E5%8F%B0%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E5%BA%94%E7%94%A8%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3.md#Android_APK_GET)
19 |
20 | ### 2. 获取SplashWnd图片列表
21 |
22 | 获取最新的SplashWnd图片列表。
23 |
24 | 文档详情转至[获取SplashWnd图片列表](https://github.com/xlink-corp/xlink-sdk/blob/master/%E7%89%A9%E8%81%94%E5%B9%B3%E5%8F%B0%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E5%BA%94%E7%94%A8%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3.md#get_SplashWnd_list)
25 |
26 |
27 |
28 |
29 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
--------------------------------------------------------------------------------
/应用端开发文档/应用端RESTful接口文档/数据存储接口.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 | # 数据存储接口
3 |
4 | * 数据存储服务Xlink平台下提供的通用数据存储接口,企业开发者和APP开发者通过API接口进行自定义的数据存储、获取读取操作。
5 |
6 |
7 | #### 使用流程:
8 |
9 | * 在管理台中创建数据表,可指定字段,和指定数据表访问权限。
10 | * 通过API接口对数据表进行操作
11 |
12 |
13 | ### 数据表分为两种类型
14 | * ** 用户公开表 **:所有用户都可访问的公开数据表。
15 | * ** 用户私有表 **:用户只可各自访问个人创建的数据的数据表。
16 |
17 | 两种类型的表均可通过配置权限限制用户的访问权限。
18 |
19 | ### 数据表可选的访问权限配置项
20 | 1. create:创建数据
21 | 2. get:读取数据
22 | 3. find: 查询数据
23 | 4. update:更新数据
24 | 5. delete:删除数据
25 |
26 | ### 数据表特点:
27 | 1. 不同企业之间数据相互隔离
28 | 2. 企业开发者对所有数据表拥有所有访问权限
29 |
30 | ### 数据表预留字段
31 |
32 | 定义 | 说明
33 | ---- | ----
34 | objectId | 标识ID
35 | createAt | 创建时间
36 | updateAt | 更新时间
37 | creator | 创建者
38 |
39 | ### 数据表字段支持类型
40 |
41 | 定义| 说明
42 | ---- | ----
43 | string | 字符串
44 | int | 32位整形
45 | boolean | 布尔类型
46 | float | 浮点类型
47 | date | 日期类型,例:2014-08-20T02:06:57.931Z
48 |
49 | ## 接口概览
50 |
51 | 1. [创建数据](#create)
52 | 2. [读取数据](#read)
53 | 3. [查询数据](#find)
54 | 4. [更新数据](#update)
55 | 5. [删除数据](#delete)
56 |
57 | ## 接口详情
58 |
59 | ### 1. 创建数据
60 |
61 | 创建一条数据。
62 |
63 | **Request**
64 |
65 | URL
66 |
67 | POST /v2/data/{table_name}
68 |
69 | Header
70 |
71 | Content-Type:"application/json"
72 | Access-Token:"调用凭证"
73 |
74 | Content
75 |
76 | {
77 | "字段A":"字段A的值",
78 | "字段B":"字段B的值"
79 | }
80 |
81 | **Response**
82 |
83 | Header
84 |
85 | HTTP/1.1 200 OK
86 |
87 | Content
88 |
89 | {
90 | "objectId":"数据ID",
91 | "createAt":"创建时间",
92 | "updateAt":"更新时间",
93 | "字段A":"字段A的值",
94 | "字段B":"字段B的值",
95 | "creator":"创建者"
96 | }
97 |
98 | ### 批量创建数据
99 |
100 | 批量创建多条数据。
101 |
102 | **Request**
103 |
104 | URL
105 |
106 | POST /v2/data_batch/{table_name}
107 |
108 | Header
109 |
110 | Content-Type:"application/json"
111 | Access-Token:"调用凭证"
112 |
113 | Content
114 |
115 | [
116 | {
117 | "字段A": "字段A的值",
118 | "字段B": "字段B的值"
119 | },
120 | {
121 | "字段A": "字段A的值",
122 | "字段B": "字段B的值"
123 | }
124 | ]
125 |
126 | **Response**
127 |
128 | Header
129 |
130 | HTTP/1.1 200 OK
131 |
132 | Content
133 |
134 | [
135 | {
136 | "objectId": "数据ID",
137 | "createAt": "创建时间",
138 | "updateAt": "更新时间",
139 | "字段A": "字段A的值",
140 | "字段B": "字段B的值",
141 | "creator": "创建者"
142 | },
143 | {
144 | "objectId": "数据ID",
145 | "createAt": "创建时间",
146 | "updateAt": "更新时间",
147 | "字段A": "字段A的值",
148 | "字段B": "字段B的值",
149 | "creator": "创建者"
150 | }
151 | ]
152 |
153 | ### 2. 读取数据
154 |
155 | **Request**
156 |
157 | URL
158 |
159 | GET /v2/data/{table_name}/{object_id}
160 |
161 | Header
162 |
163 | Content-Type:"application/json"
164 | Access-Token:"调用凭证"
165 |
166 | Content
167 |
168 | 无
169 |
170 | **Response**
171 |
172 | Header
173 |
174 | HTTP/1.1 200 OK
175 |
176 | Content
177 |
178 | {
179 | "objectId":"数据ID",
180 | "createAt":"创建时间",
181 | "updateAt":"更新时间",
182 | "字段A":"字段A的值",
183 | "字段B":"字段B的值",
184 | "creator":"创建者"
185 | }
186 |
187 | ### 3. 查询数据
188 |
189 | 通过查询语句查询数据
190 |
191 | **Request**
192 |
193 | URL
194 |
195 | POST /v2/datas/{table_name}
196 |
197 | Header
198 |
199 | Content-Type:"application/json"
200 | Access-Token:"调用凭证"
201 |
202 | Content
203 |
204 | {
205 | "offset":"请求列表的偏移量",
206 | "limit":"请求数量",
207 | "filter":["字段A","字段B"],
208 | "query":
209 | {
210 | "filed1":{"$in":["字段值","字段值"]},
211 | "filed3":{"$lt":"字段值"}
212 | },
213 | "order":
214 | {
215 | "filed1":"desc",
216 | "filed2":"asc"
217 | }
218 | }
219 |
220 | 字段| 是否必须 | 描述
221 | ---- | ---- | ----
222 | offset | 否| 从某个偏移量开始请求,默认为0
223 | limit | 否 | 请求的条目数量,默认为10
224 | filter | 否 | 字段过滤,可以指定返回结果列表的字段
225 | query | 否 | 查询条件,可以根据不同字段加上不同的比较指令来查询,支持比较指令包含如下 $in:包含于该列表任意一个值$lt:小于该字段值 $lte:小于或等于字段值 $gt:大于该字段值 $gte:大于或等于该字段值
226 | order | 否 | 可以指定通过某字段排序,desc降序,asc升序
227 |
228 | **Response**
229 |
230 | Header
231 |
232 | HTTP/1.1 200 OK
233 |
234 | Content
235 |
236 | {
237 | "count":"总数量",
238 | "list":
239 | [
240 | {
241 | "objectId":"对象ID",
242 | "createAt":"创建时间",
243 | "updateAt":"更新时间",
244 | "字段A":"字段A的值",
245 | "字段B":"字段B的值",
246 | "creator":"创建者"
247 | }
248 | ]
249 | }
250 |
251 | ### 4. 更新数据
252 |
253 | **Request**
254 |
255 | URL
256 |
257 | PUT /v2/data/{table_name}/{object_id}
258 |
259 | Header
260 |
261 | Content-Type:"application/json"
262 | Access-Token:"调用凭证"
263 |
264 | Content
265 |
266 | {
267 | "字段A":"字段A的值",
268 | "字段B":"字段B的值"
269 | }
270 |
271 | **Response**
272 |
273 | Header
274 |
275 | HTTP/1.1 200 OK
276 |
277 | Content
278 |
279 | {
280 | "objectId":"对象ID",
281 | "createAt":"创建时间",
282 | "updateAt":"更新时间",
283 | "字段A":"字段A的值",
284 | "字段B":"字段B的值",
285 | "creator":"创建者"
286 | }
287 |
288 | ### 5. 删除数据
289 |
290 | **Request**
291 |
292 | URL
293 |
294 | DELETE /v2/data/{table_name}/{object_id}
295 |
296 | Header
297 |
298 | Content-Type:"application/json"
299 | Access-Token:"调用凭证"
300 |
301 | Content
302 |
303 | 无
304 |
305 | **Response**
306 |
307 | Header
308 |
309 | HTTP/1.1 200 OK
310 |
311 | Content
312 |
313 | 无
314 |
315 |
316 |
317 |
318 |
319 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
320 |
--------------------------------------------------------------------------------
/应用端开发文档/应用端RESTful接口文档/用户扩展属性接口.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 |
4 | # 用户扩展属性接口
5 |
6 | * 用户通过设置、修改其扩展属性用来实现相关功能。
7 |
8 | ## 接口概览
9 |
10 | 1. [设置用户扩展属性](#setUserProperties)
11 | 2. [获取用户扩展属性](#getUserProperties)
12 | 3. [修改用户扩展属性](#modifyUserProperties)
13 | 4. [获取用户单个扩展属性](#getSingleUserProperties)
14 | 5. [删除用户扩展属性](#deleteUserProperties)
15 |
16 | ## 接口说明
17 |
18 | ### **1.设置用户扩展属性**
19 |
20 | 用户可以设置自定义扩展属性,扩展属性为Key-Value结构,用户扩展属性限制最多为10个。
21 |
22 | **Request**
23 |
24 | URL
25 |
26 | POST /v2/user/{user_id}/property
27 |
28 | 字段 | 是否必须 | 描述
29 | ---- | ---- | ----
30 | user_id | 是 | 用户ID
31 |
32 | Header
33 |
34 | Content-Type : "application/json"
35 | Access-Token : "调用凭证(用户)"
36 |
37 | Content
38 |
39 | {
40 | "{key}":"{value}",
41 | "{key}":"{value}"
42 | }
43 |
44 | 字段 | 是否必须 | 描述
45 | ---- | ---- | ----
46 | {key} |是 | 扩展属性key值
47 | {value} | 是 | 扩展属性value值
48 |
49 | **Response**
50 |
51 | Header
52 |
53 | HTTP/1.1 200 OK
54 |
55 | Content
56 |
57 | 无
58 |
59 |
60 | ### **2.获取用户扩展属性**
61 |
62 |
63 | 根据用户标识userid url中获取用户的扩展属性。
64 |
65 | **Request**
66 |
67 | URL
68 |
69 | GET /v2/user/{user_id}/property
70 |
71 | 字段 | 是否必须 | 描述
72 | ---- | ---- | ----
73 | user_id | 是 | 用户ID
74 |
75 | Header
76 |
77 | Content-Type : "application/json"
78 | Access-Token : "调用凭证(用户)"
79 |
80 | Content
81 |
82 | 无
83 |
84 | **Response**
85 |
86 | Header
87 |
88 | HTTP/1.1 200 OK
89 |
90 | Content
91 |
92 | {
93 | "{key}":"{value}",
94 | "{key}":"{value}"
95 | }
96 |
97 | 字段 | 是否必须 | 描述
98 | ---- | ---- | ----
99 | {key} | 是 | 扩展属性key值
100 | {value} | 是 | 扩展属性value值
101 |
102 |
103 | ### **3.修改用户扩展属性**
104 |
105 | 根据用户标识userid url中修改用户的扩展属性。
106 |
107 | **Request**
108 |
109 | URL
110 |
111 | PUT /v2/user/{user_id}/property
112 |
113 | 字段 | 是否必须 | 描述
114 | ---- | ---- | ----
115 | user_id | 是 | 用户ID
116 |
117 | Header
118 |
119 | Content-Type : "application/json"
120 | Access-Token : "调用凭证(用户)"
121 |
122 | Content
123 |
124 | {
125 | "{key}":"{value}",
126 | "{key}":"{value}"
127 | }
128 |
129 | **Response**
130 |
131 | Header
132 |
133 | HTTP/1.1 200 OK
134 |
135 | Content
136 |
137 | 无
138 |
139 |
140 | ### **4.获取用户单个扩展属性**
141 |
142 | 根据用户标识userid以及用户属性中的key url中获取用户单个扩展属性。
143 |
144 | **Request**
145 |
146 | URL
147 |
148 | GET /v2/user/{user_id}/property/{key}
149 |
150 | 字段 | 是否必须 | 描述
151 | ---- | ---- | ----
152 | user_id | 是 | 用户ID
153 | key | 是 | 用户属性的key
154 |
155 | Header
156 |
157 | Content-Type : "application/json"
158 | Access-Token : "调用凭证(用户)"
159 |
160 | Content
161 |
162 | 无
163 |
164 | **Response**
165 |
166 | Header
167 |
168 | HTTP/1.1 200 OK
169 |
170 | Content
171 |
172 | {
173 | "{key}":"{value}"
174 | }
175 |
176 | 字段 | 是否必须 | 描述
177 | ---- | ---- | ----
178 | key | 是| 扩展属性key值
179 | value | 是 | 扩展属性value值
180 |
181 |
182 | ### **5.删除用户扩展属性**
183 |
184 | 根据用户标识userid以及用户属性中的key url中删除用户单个扩展属性。
185 |
186 | **Request**
187 |
188 | URL
189 |
190 | DELETE /v2/user/{user_id}/property/{key}
191 |
192 | 字段 | 是否必须 | 描述
193 | ---- | ---- | ----
194 | user_id | 是 | 用户ID
195 | key | 是 | 用户属性的key
196 |
197 |
198 | Header
199 |
200 | Content-Type : "application/json"
201 | Access-Token : "调用凭证(用户)"
202 |
203 | Content
204 |
205 | 无
206 |
207 | **Response**
208 |
209 | Header
210 |
211 | HTTP/1.1 200 OK
212 |
213 | Content
214 |
215 | 无
216 |
217 |
218 | ©2016 **云智易** 物联云平台(http://www.xlink.cn)
219 |
--------------------------------------------------------------------------------
/应用端开发文档/应用端RESTful接口文档/用户消息接口.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 |
4 |
5 | # 用户消息接口
6 |
7 | 用户消息是指用户收到用户订阅的设备触发了告警规则而产生的告警消息,并显示在用户的消息列表中,用户可以对消息进行查看,删除等操作。
8 |
9 | 关于告警规则详情请了解 [告警规则服务接口](https://github.com/xlink-corp/xlink-sdk/blob/master/%E7%89%A9%E8%81%94%E5%B9%B3%E5%8F%B0%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E5%91%8A%E8%AD%A6%E6%9C%8D%E5%8A%A1%E6%8E%A5%E5%8F%A3.md)
10 |
11 | ## **接口概览**
12 |
13 | 1. [获取告警消息列表](#message_list)
14 | 2. [设置消息已读](#message_read)
15 | 3. [删除消息](#message_delete)
16 | 4. [获取广播消息列表](#broadcast_message_list)
17 | 5. [用户发送P2P消息](#send_message_to_user)
18 | 6. [用户设置消息免打扰](#message_not_disturb)
19 | 7. [用户获取P2P消息记录](#user_send_message_list)
20 | 8. [用户消息设置](#message_setting)
21 | 9. [删除一种类型的所有消息](#message_type_clean)
22 | 10. [附录](#appendix)
23 |
24 | ## **接口详情**
25 |
26 | ### **1. 获取告警消息列表**
27 |
28 | 获取用户告警消息列表。
29 |
30 | **Request**
31 |
32 | URL
33 |
34 | ```
35 | POST /v2/user/{user_id}/messages
36 | ```
37 |
38 | Header
39 |
40 | Content-Type : "application/json"
41 | Access-Token : "调用凭证"
42 |
43 | Content
44 |
45 | {
46 | "offset": "请求的偏移量",
47 | "limit": "请求的数量上限",
48 | "query": {
49 | "filed1": {
50 | "$in": [
51 | "字段值",
52 | "字段值"
53 | ]
54 | },
55 | "filed2": {
56 | "$lt": "字段值"
57 | }
58 | },
59 | "order":{
60 | "create_date":"desc"
61 | }
62 | }
63 |
64 |
65 | 字段 | 是否必须 | 描述
66 | ---- | ---- | ----
67 | offset | 否 | 从某个偏移量开始请求,默认为0
68 | limit | 否 | 请求的条目数量,默认为10
69 | query | 否 | 查询条件,可以根据不同字段加上不同的比较指令来查询,查询条件字段包含设备所有默认字段,不支持扩展属性字段,支持比较指令包含如下:$in:包含于该列表任意一个值$lt:小于该字段值$lte:小于或等于字段值$gt:大于该字段值$gte:大于或等于该字段值
70 | order | 否 | 排序, 例如create_date按照时间排序, desc:降序, asc:升序
71 |
72 | **Response**
73 |
74 | Header
75 |
76 | HTTP/1.1 200 OK
77 |
78 | Content
79 |
80 | {
81 | "count":"总数量",
82 | "list":
83 | [
84 | {
85 | "id":"消息ID",
86 | "type":"消息类型",
87 | "notify_type":"通知类型",
88 | "from":"消息发送者",
89 | "to":"接收者",
90 | "content":"消息内容",
91 | "create_date":"创建时间",
92 | "is_read":"是否已读",
93 | "is_push":"是否推送",
94 | "alert_name":"触发告警规则名称",
95 | "alert_value":"触发告警的数据端点值"
96 | }
97 | ]
98 | }
99 |
100 | 字段 | 是否必须 | 可否Query | 描述
101 | ---- | ---- | ---- | ----
102 | id | 是 | 是 | 消息ID
103 | type | 是 | 是 | type,消息类型,见[附录](#appendix)
104 | notify_type | 是 | 是 | 通知类型,见[附录](#appendix)
105 | from | 是 | 是 | 消息发送者
106 | to | 是 | 是 | 消息接收者
107 | content | 是 | 否 | 消息内容
108 | create_date | 是 | 是 | 创建时间,例:2014-10-09T08:15:40.843Z
109 | is_read | 是 | 是 | 是否已读
110 | is_push | 否 | 是 | 是否推送
111 | alert_name | 否 | 否 | 触发告警规则名称
112 | alert_value | 否 | 否 | 触发告警的数据端点值
113 |
114 |
115 | ### **2. 设置消息已读**
116 |
117 | 通过本接口将消息从未读设置为已读,可同时设置多条消息。
118 |
119 | **Request**
120 |
121 | URL
122 |
123 | POST /v2/user/{user_id}/message_read
124 |
125 | Header
126 |
127 | Content-Type : "application/json"
128 | Access-Token : "调用凭证"
129 |
130 | Content
131 |
132 | ["消息ID","消息ID"]
133 |
134 | **Response**
135 |
136 | Header
137 |
138 | HTTP/1.1 200 OK
139 |
140 | Content
141 |
142 | 无
143 |
144 |
145 | ### **3. 删除消息**
146 |
147 | 将消息删除,可以同时删除多条信息。
148 |
149 | **Request**
150 |
151 | URL
152 |
153 | POST /v2/user/{user_id}/message_delete
154 |
155 | Header
156 |
157 | Content-Type : "application/json"
158 | Access-Token : "调用凭证"
159 |
160 | Content
161 |
162 | ["消息ID","消息ID"]
163 |
164 | **Response**
165 |
166 | Header
167 |
168 | HTTP/1.1 200 OK
169 |
170 | Content
171 |
172 | 无
173 |
174 |
175 | ### **4. 获取广播消息列表**
176 |
177 | 获取用户广播消息列表。
178 |
179 | **Request**
180 |
181 | URL
182 | POST /v2/user/{user_id}/messages/broadcast
183 |
184 | Header
185 |
186 | Content-Type : "application/json"
187 | Access-Token : "调用凭证"
188 |
189 | Content
190 |
191 | {
192 | "offset": "请求的偏移量",
193 | "limit": "请求的数量上限",
194 | "query": {
195 | "filed1": {
196 | "$in": [
197 | "字段值",
198 | "字段值"
199 | ]
200 | },
201 | "filed2": {
202 | "$lt": "字段值"
203 | }
204 | }
205 | }
206 |
207 |
208 | 字段 | 是否必须 | 描述
209 | ---- | ---- | ----
210 | offset | 否 | 从某个偏移量开始请求,默认为0
211 | limit | 否 | 请求的条目数量,默认为10
212 | query | 否 | 查询条件,可以根据不同字段加上不同的比较指令来查询,查询条件字段包含设备所有默认字段,不支持扩展属性字段,支持比较指令包含如下:$in:包含于该列表任意一个值$lt:小于该字段值$lte:小于或等于字段值$gt:大于该字段值$gte:大于或等于该字段值
213 |
214 |
215 | **Response**
216 |
217 | Header
218 |
219 | HTTP/1.1 200 OK
220 |
221 | Content
222 |
223 | {
224 | "count" : "总数量",
225 | "list" : [
226 | {
227 | "id" : "消息id",
228 | "type" : "消息类型",
229 | "notify_type" : "通知类型",
230 | "from" : "消息发送者",
231 | "content" : "消息内容",
232 | "create_date" : "创建时间",
233 | "is_read" : "是否阅读",
234 | "broadcast" : {
235 | "pushId" : "推送的任务id",
236 | "title" : "广播消息标题",
237 | "action_type" : "广播消息动作类型",
238 | "msg_type" : "广播消息类型",
239 | "command" : "广播消息命令",
240 | "url" : "广播消息链接"
241 | }
242 | }
243 | ]
244 | }
245 |
246 | 字段 | 是否必须 | 描述
247 | ---- | ---- | ----
248 | id | 是 | 消息ID
249 | type | 是 | 消息类型,见[附录](#appendix)
250 | notify_type | 是 | 通知类型,见[附录](#appendix)
251 | from | 是 | 消息发送者
252 | content | 是 | 消息内容
253 | create_date | 是 | 创建时间,例:2014-10-09T08:15:40.843Z
254 | is_read | 是 | 是否已读
255 | broadcast | 是 | 广播消息
256 | pushId | 是 | 推送的任务id
257 | title | 是 | 广播消息标题
258 | action_type | 是 | 广播消息动作类型,见[附录](#appendix)
259 | msg_type | 是 | 广播消息类型,见[附录](#appendix)
260 | command | 否 | 广播消息命令,action_type为command时才有值
261 | url | 否 | 广播消息链接,action_type为url时才有值
262 |
263 |
264 | ### **5. 用户发送P2P消息**
265 |
266 | 用户可以向其他用户发送消息,对方用户会在自己的消息盒子中查看到消息,(注)只有同属于一个Home下面的用户之间可以互发消息。
267 |
268 | **Request**
269 |
270 | URL
271 |
272 | POST /v2/user/{user_id}/send_message
273 |
274 | Header
275 |
276 | Content-Type : "application/json"
277 | Access-Token : "调用凭证"
278 |
279 | Content
280 |
281 | {
282 | "receiver": "发送目标用户ID",
283 | "content": "消息内容"
284 | }
285 |
286 | **Response**
287 |
288 | Header
289 |
290 | HTTP/1.1 200 OK
291 |
292 | Content
293 |
294 | 无
295 |
296 | ### **6. 用户设置消息免打扰**
297 |
298 | **Request**
299 |
300 | URL
301 |
302 | POST /v2/user/{user_id}/message/not_disturb
303 |
304 | Header
305 |
306 | Content-Type : "application/json"
307 | Access-Token : "调用凭证"
308 |
309 | Content
310 |
311 | [
312 | {
313 | "type": 1,
314 | "receive": true
315 | },
316 | {
317 | "type": 2,
318 | "receive": true
319 | },
320 | {
321 | "type": 3,
322 | "receive": true
323 | }
324 | ]
325 |
326 | 字段 | 是否必须 | 描述
327 | ---- | ---- | ----
328 | type | 是 | 消息类型,见附录
329 | receive | 是 | 布尔值,表示是否接收该类型的消息。
330 |
331 | 注:本接口可单独设置一个或多个消息类型,请求的数组中可选一个或多个。
332 |
333 | **Response**
334 |
335 | Header
336 |
337 | HTTP/1.1 200 OK
338 |
339 | Content
340 |
341 | 无
342 |
343 |
344 | ### **7. 用户获取P2P消息记录**
345 |
346 | 将会获取到自己发送和接收到的消息列表
347 |
348 | **Request**
349 |
350 | URL
351 |
352 | POST /v2/user/{user_id}/messages/p2p
353 |
354 | Header
355 |
356 | Content-Type : "application/json"
357 | Access-Token : "调用凭证"
358 |
359 | Content
360 |
361 | {
362 | "offset": "请求的偏移量",
363 | "limit": "请求的数量上限",
364 | "query": {
365 | "filed1": {
366 | "$in": [
367 | "字段值",
368 | "字段值"
369 | ]
370 | },
371 | "filed2": {
372 | "$lt": "字段值"
373 | }
374 | }
375 | }
376 |
377 |
378 | **Response**
379 |
380 | Header
381 |
382 | HTTP/1.1 200 OK
383 |
384 | Content
385 |
386 | {
387 | "count": "总数量",
388 | "list": [
389 | {
390 | "id": "消息id",
391 | "type": "消息类型",
392 | "notify_type": "通知类型",
393 | "from": "消息发送者",
394 | "to": "消息接收者",
395 | "content": "消息内容",
396 | "create_date": "创建时间",
397 | "is_read": "是否阅读"
398 | }
399 | ]
400 | }
401 |
402 | ### **8. 用户消息设置**
403 |
404 | **Request**
405 |
406 | URL
407 |
408 | POST /v2/user/{user_id}/message/setting
409 |
410 | Header
411 |
412 | Content-Type : "application/json"
413 | Access-Token : "调用凭证"
414 |
415 | Content
416 |
417 | {
418 | "inform":[
419 | {
420 | "type": 1,
421 | "enable": true
422 | }
423 | ],
424 | "setting":[
425 | {
426 | "type": 1,
427 | "receive": true
428 | },
429 | {
430 | "type": 2,
431 | "receive": true
432 | },
433 | {
434 | "type": 3,
435 | "receive": true
436 | }
437 | ]
438 | }
439 |
440 | 字段 | 是否必须 | 描述
441 | ---- | ---- | ----
442 | inform | 是 | 提示
443 | inform.type | 是 | 消息提示方式, 见附录
444 | inform.enable | 是 | 是否启用
445 | setting | 是 | 消息设置
446 | setting.type | 是 | 消息类型,见附录
447 | setting.receive | 是 | 布尔值,表示是否接收该类型的消息。
448 |
449 | 注:本接口可单独设置一个或多个消息类型,请求的数组中可选一个或多个。
450 |
451 | **Response**
452 |
453 | Header
454 |
455 | HTTP/1.1 200 OK
456 |
457 | Content
458 |
459 | 无
460 |
461 |
462 | ### **9. 删除一种类型的所有消息**
463 |
464 | 将消息删除,可以同时删除多条信息。
465 |
466 | **Request**
467 |
468 | URL
469 |
470 | PUT /v2/user/{user_id}/message_clean?message_type={message_type}
471 |
472 | 字段 | 是否必须 | 描述
473 | ---- | ---- | ----
474 | message_type | 是 | 消息类型,见[附录](#appendix)
475 |
476 | Header
477 |
478 | Content-Type : "application/json"
479 | Access-Token : "调用凭证"
480 |
481 | Content
482 |
483 | 无
484 |
485 | **Response**
486 |
487 | Header
488 |
489 | HTTP/1.1 200 OK
490 |
491 | Content
492 |
493 | 无
494 |
495 | ### **4. 附录**
496 |
497 | **消息类型**
498 |
499 | 枚举值 | 说明
500 | ---- | ----
501 | 1 | 设备告警
502 | 2 | 设备通知
503 | 3 | 系统广播(如官方推送)
504 | 4 | P2P,用户与用户(如好友分享)
505 | 5 | 家庭留言(留言提醒)
506 |
507 | **通知类型**
508 |
509 | 枚举值 | 说明
510 | ---- | ----
511 | 1 | 通知类型
512 | 2 | 告警类型
513 |
514 | **广播消息类型**
515 |
516 | 枚举值 | 说明
517 | ---- | ----
518 | 1 | 文本类型
519 |
520 | **广播消息动作类型**
521 |
522 | 枚举值 | 说明
523 | ---- | ----
524 | 1 | url类型,点击打开链接
525 | 2 | command类型,点击执行命令
526 |
527 | **消息提示方式类型**
528 |
529 | 枚举值 | 说明
530 | ---- | ----
531 | 1 | 提示音
532 | 2 | 震动
533 |
534 |
535 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
536 |
--------------------------------------------------------------------------------
/应用端开发文档/应用端RESTful接口文档/离线推送接口.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # 用户离线推送接口
4 |
5 | 用户离线接口是应用端在离线时,能够接收到云平台的推送消息,IOS应用是苹果服务器的APN推送服务,Android应用是Google的GCM推送服务。
6 |
7 | 具体的接入流程是:
8 |
9 | * **根据所使用的推送服务器,在物联平台创建应用。(IOS应用或者Android应用)**
10 | * **创建IOS应用**
11 | * 编辑IOS应用,配置好APN相关信息
12 | * **创建Android应用**
13 | * 编辑Adnroid应用,配置好GCM相关信息
14 | * **在用创建告警规则,勾选推送应用**
15 | * **APP应用端通过接口将用户的推送token信息注册到云平台**
16 |
17 |
18 | # **接口概览**
19 |
20 | 1. 用户注册APN推送服务
21 | 2. 用户取消APN推送服务
22 | 3. 用户注册GCM推送服务
23 | 4. 用户取消GCM推送服务
24 |
25 |
26 | # **接口详情**
27 |
28 | ### **1. 用户注册APN推送服务**
29 |
30 | IOS用户将推送凭证注册到云平台,用于APN离线推送。
31 |
32 | **Request**
33 |
34 | URL
35 |
36 | POST /v2/user/{user_id}/apn_register
37 |
38 | Header
39 |
40 | Content-Type : "application/json"
41 | Access-Token : "调用凭证"
42 |
43 | Content
44 |
45 | {
46 | "app_id":"IOS应用ID",
47 | "device_token":"APN离线推送凭证"
48 | }
49 |
50 | **Response**
51 |
52 | Header
53 |
54 | HTTP/1.1 200 OK
55 |
56 | Content
57 |
58 | 无
59 |
60 | ### **2. 用户取消APN推送服务**
61 |
62 | **Requeset**
63 |
64 | URL
65 |
66 | POST /v2/user/{user_id}/apn_unregister
67 |
68 | Header
69 |
70 | Content-Type : "application/json"
71 | Access-Token : "调用凭证"
72 |
73 | Content
74 |
75 | {
76 | "app_id":"IOS应用ID"
77 | }
78 |
79 | **Response**
80 |
81 | Header
82 |
83 | HTTP/1.1 200 OK
84 |
85 | Content
86 |
87 | 无
88 |
89 | ### **3. 用户注册GCM推送服务**
90 |
91 | Android用户将推送凭证注册到云平台,用户GCM离线推送。
92 |
93 | **Request**
94 |
95 | URL
96 |
97 | POST /v2/user/{user_id}/gcm_register
98 |
99 | Header
100 |
101 | Content-Type : "application/json"
102 | Access-Token : "调用凭证"
103 |
104 |
105 | Content
106 |
107 | {
108 | "app_id":"Android应用ID",
109 | "device_token":"GCM设备Token"
110 | }
111 |
112 |
113 | **Response**
114 |
115 | Header
116 |
117 | HTTP/1.1 200 OK
118 |
119 | Content
120 |
121 | 无
122 |
123 |
124 | ### **4. 用户取消GCM推送服务**
125 |
126 | **Request**
127 |
128 | URL
129 |
130 | POST /v2/user/{user_id}/gcm_unregister
131 |
132 | Header
133 |
134 | Content-Type : "application/json"
135 | Access-Token : "调用凭证"
136 |
137 | Content
138 |
139 | {
140 | "app_id":"Android应用ID"
141 | }
142 |
143 |
144 | **Response**
145 |
146 | Header
147 |
148 | HTTP/1.1 200 OK
149 |
150 | Content
151 |
152 | 无
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
--------------------------------------------------------------------------------
/应用端开发文档/应用端RESTful接口文档/第三方用户身份接入.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # 第三方用户身份登录
4 |
5 | 云智易用户身份系统允许使用目前主流的第三方账号体系进行认证登录(如QQ、微信、微博),也支持使用其他平台账号体系登录(必须符合云智易第三方登录认证规范,并且在云智易物联平台进行相应配置)。
6 |
7 |
8 | ### **相关术语**
9 |
10 | |名称 | 定义|
11 | ---- | ----
12 | open_id | APP在第三方平台登录成功后,第三方平台返回的用户标识
13 | access_token | APP在第三方平台登录成功后,第三方平台返回的用户凭证。
14 |
15 | ***注:这里所说的第三方平台指:QQ、微信、微博和符合云智易第三方登录认证的平台。***
16 |
17 | ### **APP第三方用户身份登录流程:**
18 |
19 | 
20 |
21 |
22 |
23 |
24 |
25 | ## 接口概览
26 |
27 | 1. [第三方用户登录](#third_auth)
28 | 2. [第三方用户初始化登录密码](#init_pwd)
29 | 3. [第三方平台认证接口规范](#third_auth_url)
30 | 4. [绑定第三方帐号](#bind_third)
31 | 5. [解绑第三方帐号](#unbind_third)
32 | 6. [国外的第三方用户登录](#third_auth_foreign)
33 | 7. [绑定国外的第三方帐号](#bind_third_foreign)
34 | 8. [第三方用户初始化邮箱](#init_email)
35 | 9. [第三方用户初始化手机号](#init_phone)
36 | 10. [附录](#appendix)
37 |
38 |
39 | ## 接口详情
40 |
41 | ### 1. 第三方用户登录
42 |
43 | 用户在通过了第三方平台登录成功后,通过open_id、access_token在云智易请求登录。
44 |
45 | **Request**
46 |
47 | URL
48 |
49 | POST /v2/user_auth_third
50 |
51 | Header
52 |
53 | Content-Type:"application/json"
54 |
55 | Content
56 |
57 | {
58 | "corp_id":"企业ID",
59 | "source":"用户来源",
60 | "open_id":"790760921287143424",
61 | "access_token":"第三方用户Token"
62 | "name":"第三方用户昵称",
63 | "resource":"登录源",
64 | "plugin_id":"应用插件ID"
65 | }
66 |
67 |
68 | 字段 | 是否必须 | 说明
69 | ---- | ---- | ----
70 | corp_id | 是 | 企业 ID
71 | open_id | 是 | APP在第三方平台登录成功返回的用户标识
72 | access_token | 是 | APP在第三方平台登录成功返回的用户凭证
73 | source | 是 | 用户来源,根据第三方选择不同的来源,见[附录](#appendix)
74 | name | 否 | 第三方用户昵称
75 | resource | 否 | 登录源,用户可以在登录时指定登录源,不同登录源可同时登录,长度在0~16个字符之间。
76 | plugin_id | 否 | 所属应用插件ID
77 |
78 | **Response**
79 |
80 | Header
81 |
82 | HTTP/1.1 200 OK
83 |
84 | Content
85 |
86 | {
87 | "user_id":"用户ID",
88 | "access_token":"调用凭证",
89 | "refresh_token":"刷新凭证",
90 | "expire_in":"有效期(秒)",
91 | "authorize":"用户认证码"
92 | }
93 |
94 |
95 | 字段 | 是否必须 | 说明
96 | ---- | ---- | ----
97 | user_id | 是 | 返回云智易用户ID
98 | access_token| 是 | 用于访问云智易API的调用凭证
99 | refresh_token | 是 | 用于刷新当前调用凭证的刷新凭证
100 | expire_in | 是 | 当前调用凭证的有效期
101 | authorize | 是 | 用户认证码,用于APP连接云端的凭证
102 |
103 | ### 2. 第三方用户初始化登录密码
104 |
105 | 第三方用户登入后,初始化用于登录XLINK平台的登录密码,每个第三方用户只能初始化一次密码。
106 |
107 | **Request**
108 |
109 | URL
110 |
111 | POST /v2/user/{user_id}/init_pwd
112 |
113 | Header
114 |
115 | Content-Type:"application/json"
116 | Access-Token:"调用凭证"
117 |
118 | Content
119 |
120 | {
121 | "password": "登录密码"
122 | }
123 |
124 | **Response**
125 |
126 | Header
127 |
128 | HTTP/1.1 200 OK
129 |
130 | Content
131 |
132 | 无
133 |
134 |
135 |
136 |
137 | ### 3. 第三方平台认证接口规范
138 |
139 | 本接口用于非主流第三方平台(指非QQ、微信、微博的第三方平台或其他账号体系)身份认证,需要由第三方平台按照本接口规范实现,并在云智易物联平台管理设置该接口的URL地址。
140 |
141 | **Request**
142 |
143 | URL
144 |
145 | GET http://{third_url}?access_token={access_token}&open_id={open_id}×tamp={timestamp}&sign={sign}
146 |
147 |
148 | 字段 | 是否必须 | 描述
149 | ---- | ---- | ----
150 | access_token | 是 | 第三方用户Token
151 | open_id | 是| 第三方用户开放ID
152 | timestamp | 是 | 当前时间戳,精确到秒
153 | sign | 是 | 将open_id、timestamp、access_token串联起来,再加上在云智易管理台设置的认证URL的密钥token,产生MD5值,md5({open_id}{access_token}{timestamp}{signature_token})
154 |
155 |
156 | Header
157 |
158 | Content-Type:"application/json"
159 |
160 | Content
161 |
162 | 无
163 |
164 | **Response**
165 |
166 | 成功返回
167 |
168 | Header
169 | HTTP/1.1 200 OK
170 | Content
171 | 无
172 |
173 | 失败返回
174 |
175 | Header
176 | HTTP/1.1 403 Forbidden
177 | Content
178 | {
179 | "error":
180 | {
181 | "code":4030001,
182 | "msg":"token invalid"
183 | }
184 | }
185 |
186 | ### **4. 绑定第三方帐号**
187 |
188 | 用户在登录的情况下,通过授权绑定第三方账户,绑定成功后,该用户帐号可用第三方帐号登录。
189 | 第三方平台一般指:QQ、微信、微博以及满足XLINK平台第三方帐号认证规范的平台。
190 |
191 | **Request**
192 |
193 | URL
194 |
195 | POST /v2/user/{user_id}/bind_third
196 |
197 | Header
198 |
199 | Content-Type : "application/json"
200 | Access-Token : "调用凭证"
201 |
202 | Content
203 |
204 | {
205 | "open_id": "第三方帐号OpenID",
206 | "access_token": "第三方平台返回凭证",
207 | "source": "第三方来源"
208 | }
209 |
210 | 字段 | 是否必须 | 说明
211 | ---- | ---- | ----
212 | open_id | 是 | APP在第三方平台登录成功返回的用户标识
213 | access_token | 是 | APP在第三方平台登录成功返回的用户凭证
214 | source | 是 | 第三方来源,根据第三方选择不同的来源,见[附录](#appendix)
215 |
216 | **Response**
217 |
218 | Header
219 |
220 | HTTP/1.1 200 OK
221 |
222 | Content
223 |
224 | 无
225 |
226 |
227 | ### **5. 解绑第三方帐号**
228 |
229 | 用户解除已绑定的第三方账户信息,第三方账户用户必须保证至少有一个以上第三方帐号信息或者Xlink帐号信息才能解绑第三方帐号。
230 |
231 | **Request**
232 |
233 | URL
234 |
235 | POST /v2/user/{user_id}/unbind_third
236 |
237 | Header
238 |
239 | Content-Type : "application/json"
240 | Access-Token : "调用凭证"
241 |
242 | Content
243 |
244 | {
245 | "source": "第三方帐号平台"
246 | }
247 |
248 | **Response**
249 |
250 | Header
251 |
252 | HTTP/1.1 200 OK
253 |
254 | Content
255 |
256 | 无
257 |
258 | ### 6. 国外的第三方用户登录
259 |
260 | xlink平台无法直接访问的第三方账号体系,使用该接口登录。目前facebook,twitter。
261 | twitter使用oauth1.0验证, facebook使用oauth2.0验证。
262 |
263 | **Request**
264 |
265 | URL
266 |
267 | POST /v2/user_auth_third_foreign
268 |
269 | Header
270 |
271 | Content-Type:"application/json"
272 |
273 | Content
274 |
275 | {
276 | "corp_id":"企业ID",
277 | "source":"用户来源",
278 | "open_id":"790760921287143424",
279 | "access_token":"第三方用户Token",
280 | "name":"第三方用户昵称",
281 | "resource":"登录源",
282 | "plugin_id":"应用插件ID",
283 | "oauth_version":"1.0",
284 | "oauth_consumer_key":"DC0sePOBbQ8bYdC8r4Smg",
285 | "oauth_signature_method":"HMAC-SHA1",
286 | "oauth_timestamp":"1477446586",
287 | "oauth_nonce":"1130669700",
288 | "oauth_signature":"PAWOXPqbWK13rL%2F5QrWfKcLRfKs%3D"
289 | }
290 |
291 |
292 | 字段 | 是否必须 | 说明
293 | ---- | ---- | ----
294 | corp_id | 是 | 企业 ID
295 | open_id | 是 | APP在第三方平台登录成功返回的用户标识
296 | access_token | 是 | APP在第三方平台登录成功返回的用户凭证
297 | source | 是 | 用户来源,根据第三方选择不同的来源,见[附录](#appendix)
298 | name | 否 | 第三方用户昵称
299 | resource | 否 | 登录源,用户可以在登录时指定登录源,不同登录源可同时登录,长度在0~16个字符之间。
300 | plugin_id | 否 | 所属应用插件ID
301 | oauth_version | 是 | oauth版本.值为1.0或者2.0
302 | oauth_consumer_key| 否 | 注册应用后由应用服务商提供(如果oauth_version为1.0,必须提供)
303 | oauth_signature_method| 否 |随机字符串,须保证每次都不同(如果oauth_version为1.0,必须提供)
304 | oauth_timestamp| 否 |时间戳(如果oauth_version为1.0,必须提供)
305 | oauth_nonce| 否 |签名base string 的方法,目前支持 HMAC-SHA1(如果oauth_version为1.0,必须提供)
306 | oauth_signature| 否 |签名值(如果oauth_version为1.0,必须提供)
307 |
308 | **Response**
309 |
310 | Header
311 |
312 | HTTP/1.1 200 OK
313 |
314 | Content
315 |
316 | {
317 | "user_id":"用户ID",
318 | "access_token":"调用凭证",
319 | "refresh_token":"刷新凭证",
320 | "expire_in":"有效期(秒)",
321 | "authorize":"用户认证码"
322 | }
323 |
324 |
325 | 字段 | 是否必须 | 说明
326 | ---- | ---- | ----
327 | user_id | 是 | 返回云智易用户ID
328 | access_token| 是 | 用于访问云智易API的调用凭证
329 | refresh_token | 是 | 用于刷新当前调用凭证的刷新凭证
330 | expire_in | 是 | 当前调用凭证的有效期
331 | authorize | 是 | 用户认证码,用于APP连接云端的凭证
332 |
333 |
334 | ### **7. 绑定国外的第三方帐号**
335 |
336 | 用户在登录的情况下,通过授权绑定第三方账户,绑定成功后,该用户帐号可用第三方帐号登录。
337 | 国外的第三方平台一般指:facebook,twitter等。
338 | twitter使用oauth1.0验证, facebook使用oauth2.0验证。
339 |
340 | **Request**
341 |
342 | URL
343 |
344 | POST /v2/user/{user_id}/bind_third_foreign
345 |
346 | Header
347 |
348 | Content-Type : "application/json"
349 | Access-Token : "调用凭证"
350 |
351 | Content
352 |
353 | {
354 | "open_id": "第三方帐号OpenID",
355 | "access_token": "第三方平台返回凭证",
356 | "source": "第三方来源",
357 | "oauth_version":"1.0",
358 | "oauth_consumer_key":"DC0sePOBbQ8bYdC8r4Smg",
359 | "oauth_signature_method":"HMAC-SHA1",
360 | "oauth_timestamp":"1477446586",
361 | "oauth_nonce":"1130669700",
362 | "oauth_signature":"PAWOXPqbWK13rL%2F5QrWfKcLRfKs%3D"
363 | }
364 |
365 | 字段 | 是否必须 | 说明
366 | ---- | ---- | ----
367 | open_id | 是 | APP在第三方平台登录成功返回的用户标识
368 | access_token | 是 | APP在第三方平台登录成功返回的用户凭证
369 | source | 是 | 第三方来源,根据第三方选择不同的来源,见[附录](#appendix)
370 | oauth_version | 是 | oauth版本.值为1.0或者2.0
371 | oauth_consumer_key| 否 | 注册应用后由应用服务商提供(如果oauth_version为1.0,必须提供)
372 | oauth_signature_method| 否 |随机字符串,须保证每次都不同(如果oauth_version为1.0,必须提供)
373 | oauth_timestamp| 否 |时间戳(如果oauth_version为1.0,必须提供)
374 | oauth_nonce| 否 |签名base string 的方法,目前支持 HMAC-SHA1(如果oauth_version为1.0,必须提供)
375 | oauth_signature| 否 |签名值(如果oauth_version为1.0,必须提供)
376 |
377 |
378 | **Response**
379 |
380 | Header
381 |
382 | HTTP/1.1 200 OK
383 |
384 | Content
385 |
386 | 无
387 |
388 | ### 8. 第三方用户初始化邮箱
389 |
390 | 第三方用户登入后,可以初始化邮箱号,并设置密码。
391 |
392 | **Request**
393 |
394 | URL
395 |
396 | POST /v2/user/{user_id}/init_email
397 |
398 | Header
399 |
400 | Content-Type:"application/json"
401 | Access-Token:"调用凭证"
402 |
403 | Content
404 |
405 | {
406 | "email":"邮箱",
407 | "verifycode":"验证码",
408 | "password": "登录密码",
409 | "nickname":"昵称"
410 | }
411 |
412 | 字段 | 是否必须 | 说明
413 | ---- | ---- | ----
414 | email | 是 | 邮箱号
415 | verifycode| 是 | 验证码
416 | password | 是 | 初始化的密码
417 | nickname | 否 | 用户昵称
418 |
419 | **Response**
420 |
421 | Header
422 |
423 | HTTP/1.1 200 OK
424 |
425 | Content
426 |
427 | 无
428 |
429 | ### 9. 第三方用户初始化手机
430 |
431 | 第三方用户登入后,可以初始化手机号,并设置密码。
432 |
433 | **Request**
434 |
435 | URL
436 |
437 | POST /v2/user/{user_id}/init_phone
438 |
439 | Header
440 |
441 | Content-Type:"application/json"
442 | Access-Token:"调用凭证"
443 |
444 | Content
445 |
446 | {
447 | "phone":"手机号",
448 | "phone_zone":"手机区号,默认为中国:+86",
449 | "verifycode":"验证码",
450 | "password": "登录密码",
451 | "nickname":"昵称"
452 | }
453 |
454 | 字段 | 是否必须 | 说明
455 | ---- | ---- | ----
456 | phone | 是 | 手机号
457 | verifycode| 是 | 验证码
458 | phone_zone | 否 | 默认为中国:+86
459 | password | 是 | 初始化的密码
460 | nickname | 否 | 用户昵称
461 |
462 | **Response**
463 |
464 | Header
465 |
466 | HTTP/1.1 200 OK
467 |
468 | Content
469 |
470 | 无
471 |
472 | ### 10. 附录
473 |
474 | **用户来源**
475 |
476 | 枚举值 | 说明
477 | ---- | ----
478 | 1|web
479 | 2|Android客户端
480 | 3|IOS客户端
481 | 4|微信用户
482 | 5|QQ用户
483 | 6|微博用户
484 | 7|facebook用户
485 | 8|twitter用户
486 | 10|其它遵循xlink统一身份认证规范的用户来源
487 |
488 |
489 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
490 |
--------------------------------------------------------------------------------
/应用端开发文档/应用端RESTful接口文档/获取接口调用凭据.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 |
4 | # 获取接口调用凭据
5 |
6 |
7 | RESTful接口调用凭证是指云智易平台识别一个应用端是否有效的依据,在云智易平台注册一个用户后,用户可以进
8 | 行认证获得一个有效的调用凭证和一个有效的刷新凭证,用户可以通过该调用凭证进行调用云智易平台的Rest接
9 | 口。一个有效的调用凭证获取后会在2个小时后失效,应用开发者需要在失效前通过有效的刷新凭证在云智易平台
10 | 上进行刷新凭证。
11 |
12 |
13 |
14 | ### **用户登录认证获取调用凭证流程: **
15 |
16 |
17 |
18 |
19 | 
20 |
21 |
22 |
23 |
24 | #### **可查看[用户身份接口](https://github.com/xlink-corp/xlink-sdk/blob/master/%E5%BA%94%E7%94%A8%E7%AB%AF%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/%E5%BA%94%E7%94%A8%E7%AB%AFRESTful%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E6%8E%A5%E5%8F%A3.md)文档了解详细信息。**
25 |
26 |
27 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
28 |
--------------------------------------------------------------------------------
/应用端开发文档/应用端RESTful接口文档/错误码说明.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 |
4 | # 错误码说明
5 |
6 | 云智易平台为开发者提供了RESTful风格的接口,开发者通过HTTP协议中的返回信息可获知接口是否正确或错误的返回。
7 |
8 | 说明如下:
9 |
10 | HTTP返回信息| 说明
11 | ---- | ----
12 | HTTP/1.1 200 OK | 请求成功,返回正确的数据
13 | HTTP/1.1 400 Bad Request | 参数错误
14 | HTTP/1.1 403 Forbidden | 接口权限错误
15 | HTTP/1.1 404 Not Found | 访问的资源不存在
16 | HTTP/1.1 503 Service Unavailable | 服务器发生异常
17 |
18 | **根据HTTP返回状态码,除了返回状态码是200并返回正确数据的情况下,其他返回状态码都返回如下格式的数据:**
19 |
20 | {"error":{"code":"错误码","msg":"错误码信息"}}
21 |
22 |
23 | ####***code的组成格式是{HTTP返回状态码}+{错误编号}***
24 |
25 |
26 | **HTTP 返回状态码为400的错误说明:**
27 |
28 |
29 | code | 错误码信息说明
30 | ---- | ----
31 | 4001001 | 请求数据字段验证不通过
32 | 4001002 | 请求数据必须字段不可为空
33 | 4001003 | 手机验证码不存在
34 | 4001004 | 手机验证码错误
35 | 4001005 | 注册的手机号已存在
36 | 4001006 | 注册的邮箱已存在
37 | 4001007 | 密码错误
38 | 4001008 | 帐号不合法
39 | 4001009 | 企业成员状态不合法
40 | 4001010 | 刷新token不合法
41 | 4001011 | 未知成员角色类型
42 | 4001012 | 只有管理员才能邀请
43 | 4001013 | 不可修改其他成员信息
44 | 4001014 | 不能删除本人
45 | 4001015 | 未知的产品连接类型
46 | 4001016 | 已发布的产品不可删除
47 | 4001017 | 固件版本已存在
48 | 4001018 | 数据端点未知数据类型
49 | 4001019 | 数据端点索引已存在
50 | 4001020 | 已发布的数据端点不可删除
51 | 4001021 | 该产品下设备MAC地址已存在
52 | 4001022 | 不能删除已激活的设备
53 | 4001023 | 扩展属性Key为预留字段
54 | 4001024 | 设备扩展属性超过上限
55 | 4001025 | 新增已存在的扩展属性
56 | 4001026 | 更新不存在的扩展属性
57 | 4001027 | 属性字段名不合法
58 | 4001028 | 邮件验证码不存在
59 | 4001029 | 邮件验证码错误
60 | 4001030 | 用户状态不合法
61 | 4001031 | 用户手机尚未认证
62 | 4001032 | 用户邮箱尚未认证
63 | 4001033 | 用户已经订阅设备
64 | 4001034 | 用户没有订阅该设备
65 | 4001035 | 自动升级任务名称已存在
66 | 4001036 | 升级任务状态未知
67 | 4001037 | 已有相同的起始版本升级任务
68 | 4001038 | 设备激活失败
69 | 4001039 | 设备认证失败
70 | 4001041 | 订阅设备认证码错误
71 | 4001042 | 授权名称已存在
72 | 4001043 | 该告警规则名称已存在
73 | 4001045 | 数据表名称已存在
74 | 4001046 | 产品固件文件超过大小限制
75 | 4001047 | APN密钥文件超过大小限制
76 | 4001048 | APP的APN功能未启用
77 | 4001049 | 产品未允许用户注册设备
78 | 4001050 | 该类型的邮件模板已存在
79 | 4001051 | 邮件模板正文内容参数缺失
80 | 4001052 | 该手机今日发送短信的次数已达上限
81 | 4001053 | 设备已经是最新版本
82 | 4001054 | 设备不在线
83 | 4001055 | 设备升级失败
84 | 4001056 | 模板审核中
85 | 4001057 | 应用类型错误
86 | 4001058 | 数据表类型错误
87 | 4001059 | 第三方用户验证失败
88 | 4001060 | 图片大小超过上限
89 | 4001061 | 用户由于多次输入错误密码已被锁定
90 | 4001062 | 企业成员账号已经激活
91 | 4001063 | 用户邮箱已经激活
92 | 4001064 | 访问设备超时
93 | 4001065 | 微信授权登录失败
94 | 4001066 | 微博授权登录失败
95 | 4001067 | 获取QQ用户信息失败
96 | 4001068 | 获取微信用户信息失败
97 | 4001069 | 获取微博用户信息失败
98 | 4001070 | 获取第三方用户信息失败
99 | 4001071 | AccessKey不可用
100 | 4001072 | AccessKey错误
101 | 4001073 | 该Mac地址的设备已经授权
102 | 4001074 | 该Mac地址的设备未授权
103 | 4001075 | 无效的转发URL
104 | 4001076 | 用户不是该设备的管理员
105 | 4001077 | 微信授权配置参数无效
106 | 4001078 | 产品授权中
107 | 4001079 | 管理员账号密码错误
108 | 4001080 | 配额达到上限
109 | 4001081 | 访问邮件服务商异常
110 | 4001082 | 云迁移任务不存在
111 | 4001083 | 云迁移任务已存在
112 | 4001084 | 云迁移任务取消
113 | 4001085 | 云迁移任务完成
114 | 4001086 | 产品连接类型并非PC类型
115 | 4001087 | 产品不允许激活注册设备
116 | 4001088 | 邮件域名超过上限
117 | 4001089 | 未知的快照类型
118 | 4001090 | 该应用插件类型已存在
119 | 4001091 | 产品已经发布
120 | 4001092 | 应用插件已存在
121 | 4001093 | 标签搜索运算符未知
122 | 4001094 | 手机号已被使用
123 | 4001095 | 非法URL
124 | 4001096 | 邮箱已被使用
125 | 4001097 | 设备授权码验证错误
126 | 4001098 | 向设备发送probe包失败
127 | 4001099 | 自定义角色使用中
128 | 4001100 | splashWnd图片数量达到上限
129 | 4001101 | xfile最大数量
130 | 4001102 | 密码过于简单
131 | 4001103 | 生成二维码信息数量超过上限
132 | 4001104 | 广播消息类型未知
133 | 4001105 | 广播消息动作类型未知
134 | 4001106 | 广播消息目标地址类型未知
135 | 4001107 | 用户不是第三方用户
136 | 4001108 | 用户已初始化登录密码
137 | 4001109 | 用户已绑定第三方帐号
138 | 4001110 | 解除绑定第三方帐号失败,请保证至少保留一个第三方帐号信息或者Xlink帐号信息
139 | 4001111 | 设备地理位置信息不存在
140 | 4001112 | 未知的设备固件类型
141 | 4001113 | 未知的固件升级任务类型
142 | 4001114 | 设备ID与调用凭证不对应
143 | 4001115 | 未知的用户性别
144 | 4001116 | 用户区域设置错误
145 | 4001117 | 经销商已被停用
146 | 4001118 | 大客户已被停用
147 | 4001119 | 推送任务不存在
148 | 4001120 | 企业云迁移任务不存在
149 | 4001121 | 设备未激活
150 | 4001122 | 设备区域设置错误
151 | 4001123 | 推送任务已经开启,不可重复开启
152 | 4001124 | 用户未初始化密码
153 | 4001125 | 用户自定义的第三方账户已被绑定
154 | 4001126 | QQ账户已被绑定
155 | 4001127 | 微信账户已被绑定
156 | 4001128 | 微博账户已被绑定
157 | 4001129 | 未识别的二维码
158 | 4001130 | 未知的Home邀请
159 | 4001131 | Home邀请状态错误
160 | 4001132 | Home超级管理员不可删除
161 | 4001133 | Home创建者不可退出
162 | 4001134 | 必须为Home邀请者
163 | 4001134 | 该用户已在Home成员列表中
164 | 4001135 | 用户归属在不同Home下
165 | 4001136 | Home成员已达到限制
166 | 4001137 | 未启用应用
167 | 4001138 | 未知升级任务类型
168 | 4001139 | 不允许多个管理员
169 | 4001140 | 设备不归属在Home中
170 | 4001141 | 设备因扫描策略原因订阅失败
171 | 4001142 | 固件在启动的升级任务中不能被修改
172 | 4001143 | 未知的经销商销售记录中客户类型
173 | 4001144 | 应用未被授权
174 | 4001145 | 未知的应用状态
175 | 4001146 | 微信设备授权任务不是正在进行
176 | 4001147 | 导入的设备mac地址或者sn重复
177 | 4001148 | 设备的sn已存在
178 | 4001149 | 快照统计规则统计粒度未知
179 | 4001150 | 快照规则的统计规则超过限额
180 | 4001151 | 快照规则不包含数据端点
181 | 4001152 | 快照统计规则统计方式未知
182 | 4001153 | 智能互联的指令不合法
183 | 4001154 | 需要进行图片验证码
184 | 4001155 | 未知的图片验证码
185 | 4001156 | 错误的图片验证码
186 | 4001157 | 快照规则不支持有统计规则
187 | 4001158 | 排序方式类型未知
188 | 4001159 | 快照统计规则未知类型
189 | 4001160 | 快照规则有统计规则
190 | 4001161 | 无效的oauth授权应用
191 | 4001162 | 无效的oauth回调URI
192 | 4001163 | 无效的oauth的scope列表
193 | 4001164 | 无效的oauth授权码
194 | 4001165 | 无效的oauth请求类型
195 | 4001166 | oauth授权失败
196 | 4001167 | 快照统计规则未知状态
197 | 4001168 | oauth access token无效
198 | 4001169 | twitter用户已经存在
199 | 4001170 | facebook用户已经存在
200 | 4001171 | oauth版本未知
201 | 4001172 | 导出任务未知状态
202 | 4001173 | 导出任务不是处于已完成导出状态
203 | 4001174 | 导出任务已过期
204 | 4001175 | 未知的扩展属性
205 | 4001176 | 销售信息不存在
206 | 4001177 | 大客户用户名已存在
207 | 4001178 | 数据端点来源类型未知
208 | 4001179 | 经销商账号已存在
209 | 4001180 | 未知的复合查询逻辑
210 | 4001181 | 手机区号错误
211 | 4001182 | 设备日志类型未知
212 | 4001183 | 非应用类型的数据端点
213 | 4001184 | 产品连接类型不是蓝牙类型
214 | 4001185 | 第三方用户账号URL校验失败
215 | 4001186 | 未设置子设备功能的相关配置
216 | 4001187 | 子设备网关的能力的配置项错误
217 | 4001188 | 网关能力类型未知
218 | 4001189 | 耗材数据类型未知
219 | 4001190 | 设备授权的最大数量达到限制
220 | 4001191 | 设备已经设置所归属Home
221 | 4001192 | 企业别名已存在
222 | 4001193 | 语音模板的数据端点可设置个数超过5个
223 | 4001194 | 一个数据端点的语音模板超过3个
224 | 4001195 | 语音模板已经存在
225 | 4001196 | 语音模板不存在
226 | 4001197 | 语音模板不合法
227 | 4001198 | home的房间名称重复
228 | 4001199 | home的房间zone名称重复
229 | 4001200 | home的房间数超出限制
230 | 4001201 | home的zone数超出限制
231 | 4001202 | 设备不能被解除订阅
232 | 4001203 | home的设备不属于房间
233 |
234 |
235 | **HTTP 返回状态码为403的错误说明:**
236 |
237 |
238 | code | 错误码信息说明
239 | ---- | ----
240 | 4031001 | 禁止访问
241 | 4031002 | 禁止访问,需要Access-Token
242 | 4031003 | 无效的Access-Token
243 | 4031004 | 需要企业的调用权限
244 | 4031005 | 需要企业管理员权限
245 | 4031006 | 需要数据操作权限
246 | 4031007 | 禁止访问私有数据
247 | 4031008 | 分享已经被取消
248 | 4031009 | 分享已经接受
249 | 4031010 | 用户没有订阅设备,不能执行操作
250 | 4031011 | 应用插件认证不通过
251 | 4031012 | 分享已经失效
252 | 4031013 | 设备不能被订阅
253 | 4031014 | 需要home的管理员及以上的权限
254 | 4031015 | 需要home的创建者权限
255 | 4031016 | Home访客过期
256 | 4031017 | 需要home的超级管理员权限
257 | 4031018 | 应用提供商身份签名无效
258 | 4031019 | Oauth的token没有权限调用接口
259 | 4031020 | 需要大客户组织用户管理员权限
260 | 4031021 | Access-Token过期
261 | 4031022 | Access-Token被刷新
262 |
263 | **HTTP 返回状态码为404的错误说明:**
264 |
265 | code | 错误码信息说明
266 | ---- | ----
267 | 4041001 | URL找不到
268 | 4041002 | 企业成员帐号不存在
269 | 4041003 | 企业成员不存在
270 | 4041004 | 激活的成员邮箱不存在
271 | 4041005 | 产品信息不存在
272 | 4041006 | 产品固件不存在
273 | 4041007 | 数据端点不存在
274 | 4041008 | 设备不存在
275 | 4041009 | 设备扩展属性不存在
276 | 4041010 | 企业不存在
277 | 4041011 | 用户不存在
278 | 4041012 | 用户扩展属性不存在
279 | 4041013 | 升级任务不存在
280 | 4041014 | 第三方身份授权不存在
281 | 4041015 | 告警规则不存在
282 | 4041016 | 数据表不存在
283 | 4041017 | 数据不存在
284 | 4041018 | 分享资源不存在
285 | 4041019 | 企业邮箱不存在
286 | 4041020 | APP不存在
287 | 4041021 | 产品转发规则不存在
288 | 4041022 | 邮件模板不存在
289 | 4041023 | 第三方用户验证URL不存在
290 | 4041024 | AccessKey不存在
291 | 4041025 | 微信授权配置不存在
292 | 4041026 | 快照规则不存在
293 | 4041027 | splashWnd图片不存在
294 | 4041028 | splashWnd图片已经存在
295 | 4041029 | 成员角色不存在
296 | 4041030 | 经销商不存在
297 | 4041031 | 大客户不存在
298 | 4041032 | 推送任务不存在
299 | 4041033 | 产品配额超过上限
300 | 4041034 | 导入授权记录不存在
301 | 4041035 | home的成员不存在
302 | 4041036 | home不存在
303 | 4041037 | 应用提供商不存在
304 | 4041038 | 推送消息在推送中或者已推送,不允许删除
305 | 4041039 | 经销商下不存在该设备
306 | 4041040 | 快照统计规则不存在
307 | 4041041 | 授权记录不存在
308 | 4041042 | home邀请记录不存在
309 | 4041043 | 导出任务不存在
310 | 4041044 | 虚拟设备不存在
311 | 4041045 | 大客户用户名不存在
312 | 4041046 | 指定的大客户组织不存在
313 | 4041047 | 用户不是邀请者
314 | 4041048 | 产品扩展属性不存在
315 | 4041049 | 产品不支持子设备
316 | 4041050 | 上级经销商代码不存在
317 | 4041051 | 证书不存在
318 | 4041052 | home的房间不存在
319 | 4041053 | home的zone不存在
320 |
321 | **HTTP 返回状态码为503的错误说明:**
322 |
323 | code | 错误码信息说明
324 | ----|----
325 | 5031001 | 服务端发生异常
326 |
327 |
328 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
329 |
--------------------------------------------------------------------------------
/应用端开发文档/微信智能硬件接入指南V2.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # 微信智能硬件接入指南V2
4 |
5 | 该文档面向那些需要将微信硬件功能集成到自有产品中,使用微信客户端连接,控制设备的云智易平台的使用者。
6 |
7 | ## 微信硬件接入
8 |
9 | * 微信硬件服务介绍:http://iot.weixin.qq.com
10 |
11 | ## 微信硬件接入方式
12 |
13 | * 微信硬件接入分为 **设备直连微信硬件云通道** 与 **设备商云连接微信硬件云通道** , 如下两张图:
14 |
15 | 
16 |
17 | 
18 |
19 | * 其最大的区别在于设备是否通过XLINK云平台连接到互联网,微信设备直连方案是不通过云智易平台的。厂商云连接是经过云智易平台的。
20 | * 云智易现在对接的微信设备接入,统一采用用 **设备商云连接微信硬件云通道** 方案,其优势为:
21 | 1. 通过云智易平台管理与授权所有设备;
22 | 2. 通过云智易平台收集和查看设备数据;
23 | 3. 使用云智易平台的其他功能;
24 |
25 | ## 开发前准备
26 |
27 | * 平台使用者如果需要使用微信硬件功能,需要先完成下面的开发前准备工作:
28 |
29 | ### 准备固件
30 |
31 | * 微信设备的配置上网需要用到微信的AirKiss配网功能,AirKiss配网采用的是类SmartConfig的配网方式,需要WIFI芯片厂商支持,以下列出微信AirKiss支持的芯片类型:[http://iot.weixin.qq.com/wiki/new/index.html?page=4-1-4](http://iot.weixin.qq.com/wiki/new/index.html?page=4-1-4)
32 | * 同时也需要使用到云智易对应的芯片固件,这个可以通过商务与云智易联系。
33 |
34 | ### 微信配置
35 |
36 | * 流程步骤:
37 | 1. 申请微信公众号
38 | 2. 开放公众号硬件功能
39 | 3. 新建硬件产品
40 | 4. 进入微信公众号设置的功能设置项,将JS接口安全域名中加入xlink.cn域名;
41 | 5. 进入微信接口权限设置,修改“网页授权获取用户基本信息”参数,将页面所处域名配置到选项中。
42 |
43 | ### 云智易企业管理台配置
44 |
45 | * 流程步骤:
46 | 1. 登录管理台,进入应用配置管理
47 | 2. 添加微信应用
48 | 3. 配置微信应用信息
49 | 4. 添加产品
50 | 5. 添加测试微信设备
51 |
52 | ## 微信设备控制流程
53 |
54 | * 流程说明:
55 | 1. 用户通过微信扫描设备二维码绑定设备;
56 | 1. 如果设备使用的是统一二维码,需要在绑定设备之前,按照微信提示,对设备进行AirKiss配置,让设备能够上网。
57 | 2. 当设备上网以后,微信会找到该设备,并且提醒用户绑定设备。
58 | 2. 用户在绑定设备后,会直接进入厂商公众号,厂商公众号提供设备控制菜单打开设备控制页面。
59 | 3. 用户打开页面,获取到自己绑定的设备列表,选中需要控制的设备,连接设备。
60 | 4. 连接设备,进行控制。
61 |
62 | ## 微信设备Airkiss上网配置页面开发说明
63 |
64 | * 流程说明:
65 | 1. 页面[获取微信JSAPI调用签名](#url_signature);
66 | 2. 页面[初始化微信JSAPI](https://mp.weixin.qq.com/wiki/7/1c97470084b73f8e224fe6d9bab1625b.html#JSSDK.E4.BD.BF.E7.94.A8.E6.AD.A5.E9.AA.A4);
67 | 3. 调用[微信IOT JSAPI](http://iot.weixin.qq.com/wiki/doc/both/微信硬件JSAPI介绍文档1.0.5.pdf)中的configWXDeviceWiFi接口进行AirKiss配置;
68 |
69 |
70 | ## 微信设备控制H5页面开发说明
71 |
72 | H5页面的微信设备控制通过通用的xlink jssdk实现,参见[xlink-jssdk接口文档](https://github.com/xlink-corp/JS-SDK/blob/develop/docs/xlink-jssdk接口文档.md#env-wechat)
73 |
74 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
75 |
--------------------------------------------------------------------------------
/物联平台管理接口文档/README.md:
--------------------------------------------------------------------------------
1 | # 物联平台管理接口文档
2 |
3 |
--------------------------------------------------------------------------------
/物联平台管理接口文档/XLINK二维码规范.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # XLINK二维码规范
4 |
5 | ### **1. 产品二维码**
6 |
7 | #### 示例
8 |
9 | ```
10 | XQR:T:P;V:1;PID:%pid%;KEY:VALUE;KEY1:VALUE;;
11 | ```
12 |
13 | #### 格式说明
14 |
15 | * 冒号:分开Key与Value;
16 | * 分号:分开每个属性节点;
17 |
18 | 字段 | 是否必须 | 允许自定义 | 说明
19 | --- | --- | --- | ----
20 | 固定字段 | | | **注意:**固定字段的前后顺序也是固定的
21 | XQR | 是 | 否 | 表示XLINK的二维码数据
22 | T | 是 | 否 | 表示二维码类型,P为产品二维码;D为设备二维码
23 | V | 是 | 否 | 表示二维码数据协议版本,固定为1
24 | PID | 是 | 否 | 表示产品ID
25 | 可变字段 | |
26 | KEY | 否 | 是 | 自定义字段KEY,VALUE为自定义值
27 | KEY1 | 否 | 是 | 自定义字段KEY1,VALUE为自定义值
28 | 结尾 | | | 固定用双分号作为结尾字符
29 | ;; | 是 | 否 | 固定用双分号作为结尾字符
30 |
31 | ### **2. 设备二维码**
32 |
33 | #### 示例
34 |
35 | ```
36 | XQR:T:D;V:1;PID:%pid%;QK:%qrkey%;SN:%SN%;MAC:%MAC%;KEY:VALUE;KEY1:VALUE;;
37 | ```
38 |
39 | #### 格式说明
40 |
41 | * 冒号:分开Key与Value;
42 | * 分号:分开每个属性节点;
43 |
44 | 字段 | 是否必须 | 允许自定义 | 说明
45 | --- | --- | --- | ---
46 | 固定字段 | | | **注意:**固定字段的前后顺序也是固定的
47 | XQR | 是 | 否 | 表示XLINK的二维码数据
48 | T | 是 | 否 | 表示二维码类型,D为设备二维码;P为产品二维码;
49 | V | 是 | 否 | 表示二维码数据协议版本,固定为1
50 | PID | 是 | 否 | 表示产品ID
51 | QK | 是 | 否 | 设备KEY,由平台生成
52 | 可变字段 | |
53 | SN | 否 | 否(由平台生成)| 设备SN
54 | MAC | 否 | 否(由平台生成)| 设备MAC
55 | KEY | 否 | 是 | 自定义字段KEY,VALUE为自定义值
56 | KEY1 | 否 | 是 | 自定义字段KEY1,VALUE为自定义值
57 | 结尾 | | 固定用双分号作为结尾字符
58 | ;; | 是 | 否 | 固定用双分号作为结尾字符
59 |
60 |
61 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
62 |
--------------------------------------------------------------------------------
/物联平台管理接口文档/个性化设置.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # 个性化设置
4 |
5 |
6 | 1. [个性化设置数据结构定义](#personal_define)
7 | 2. 个性化设置
8 | 1. [设置用户管理个性化设置](#set_user_list)
9 | 2. [获取用户管理个性化设置](#get_user_list)
10 | 3. [设置设备管理个性化设置](#set_device_list)
11 | 4. [获取设备管理个性化设置](#get_device_list)
12 | 5. [设置产品个性化设置](#set_product_list)
13 | 6. [获取产品个性化设置](#get_product_list)
14 |
15 | 3. 企业自定义设置
16 | 1. [设置](#corp_set)
17 | 2. [获取](#corp_get)
18 |
19 | ## 1. 个性化设置数据结构定义
20 |
21 | ### 用户列表个性设置
22 |
23 | id:corp.user.list
24 |
25 | base_fields:
26 |
27 | | 字段 | 说明 |
28 | --- | --- | --- |
29 | | name | 字段名
30 | | label | 该字段显示名称/标题
31 | | hidden | 在列表上是否默认处于隐藏状态,可选,默认是false
32 | | sort | 显示顺序
33 | |value_type | 值的类型,见[扩展字段值的类型](#property_value_type)
34 |
35 |
36 | ### 设备列表个性设置
37 |
38 |
39 | id:corp.{product_id}.device.list
40 |
41 | base_fields:
42 |
43 | | 字段 | 说明 |
44 | --- | --- | --- |
45 | | name | 字段名
46 | | label | 该字段显示名称/标题
47 | | hidden | 在列表上是否默认处于隐藏状态,可选,默认是false
48 | | sort | 显示顺序
49 | |value_type | 值的类型,见[扩展字段值的类型](#property_value_type)
50 |
51 | datapoints:
52 |
53 | | 字段 | 说明 |
54 | --- | --- | --- |
55 | | index | 数据端点的索引
56 | | name | 数据端点名/ID
57 | | label | 该字段显示名称/标题
58 | | hidden | 在列表上是否默认处于隐藏状态,可选,默认是false
59 | | sort | 显示顺序
60 |
61 | ### 产品列表个性化设置
62 |
63 | id:corp.product.{product_id}.list
64 |
65 | | 字段 | 说明 |
66 | --- | --- | --- |
67 | | name | 字段名
68 | | label | 该字段显示名称/标题
69 | | hidden | 在列表上是否默认处于隐藏状态,可选,默认是false
70 | | sort | 显示顺序
71 | |value_type | 值的类型,见[扩展字段值的类型](#property_value_type)
72 | |default_value | 字段默认值
73 |
74 | ## 2. 个性化设置
75 |
76 | ### 1). 设置用户管理个性化设置
77 |
78 | **Request**
79 |
80 | URL
81 |
82 | POST /v2/customization?id=corp.user.list
83 |
84 | Header
85 |
86 | Content-Type:application/json
87 | Access-Token:"调用凭证"
88 |
89 | Content
90 |
91 | {
92 | "base_fields": [
93 | {
94 | "name": "",
95 | "label": "",
96 | "hidden": true,
97 | "sort": 1,
98 | "value_type":1,
99 | }
100 | ]
101 | }
102 |
103 | **Response**
104 |
105 | Header
106 |
107 | HTTP/1.1 200 OK
108 |
109 | Content
110 |
111 | {
112 | "base_fields": [
113 | {
114 | "name": "",
115 | "label": "",
116 | "hidden": true,
117 | "sort": 1,
118 | "value_type":1,
119 | }
120 | ]
121 | }
122 |
123 |
124 |
125 | ### 2). 获取用户管理个性化设置
126 |
127 | **Request**
128 |
129 | URL
130 |
131 | GET /v2/customization?id=corp.user.list
132 |
133 | Header
134 |
135 | Content-Type:application/json
136 | Access-Token:"调用凭证"
137 |
138 | Content
139 |
140 | 无
141 |
142 | **Response**
143 |
144 | Header
145 |
146 | HTTP/1.1 200 OK
147 |
148 | Content
149 |
150 | {
151 | "base_fields": [
152 | {
153 | "name": "",
154 | "label": "",
155 | "hidden": true,
156 | "sort": 1,
157 | "value_type":1,
158 | }
159 | ]
160 | }
161 |
162 |
163 | ### 3). 获取产品个性化设置
164 |
165 |
166 | **Request**
167 |
168 | URL
169 |
170 | POST /v2/customization?id=corp.{product_id}.device.list
171 |
172 | Header
173 |
174 | Content-Type:application/json
175 | Access-Token:"调用凭证"
176 |
177 | Content
178 |
179 | {
180 | "base_fields": [
181 | {
182 | "name": "",
183 | "label": "",
184 | "hidden": true,
185 | "sort": 1,
186 | "value_type":1,
187 | }
188 | ],
189 | "datapoints": [
190 | {
191 | "index": 0,
192 | "name": "",
193 | "label": "",
194 | "hidden":true,
195 | "sort": 0
196 | }
197 | ]
198 | }
199 |
200 |
201 | **Response**
202 |
203 | Header
204 |
205 | HTTP/1.1 200 OK
206 |
207 | Content
208 |
209 | {
210 | "base_fields": [
211 | {
212 | "name": "",
213 | "label": "",
214 | "hidden": true,
215 | "sort": 1,
216 | "value_type":1,
217 | }
218 | ],
219 | "datapoints": [
220 | {
221 | "index": 0,
222 | "name": "",
223 | "label": "",
224 | "sort": 0,
225 | "value_type":1
226 | }
227 | ]
228 | }
229 |
230 |
231 |
232 | ### 4). 获取设备管理个性化设置
233 | **Request**
234 |
235 | URL
236 |
237 | GET /v2/customization?id=corp.{product_id}.device.list
238 |
239 | Header
240 |
241 | Content-Type:application/json
242 | Access-Token:"调用凭证"
243 |
244 | Content
245 |
246 | 无
247 |
248 | **Response**
249 |
250 | Header
251 |
252 | HTTP/1.1 200 OK
253 |
254 | Content
255 |
256 | {
257 | "base_fields": [
258 | {
259 | "name": "",
260 | "label": "",
261 | "hidden": true,
262 | "sort": 1,
263 | "value_type":1
264 | }
265 | ],
266 | "datapoints": [
267 | {
268 | "index": 0,
269 | "name": "",
270 | "label": "",
271 | "hidden":true,
272 | "sort": 0,
273 | "value_type":1,
274 | }
275 | ]
276 | }
277 |
278 | ### 5). 设置产品个性化设置
279 |
280 | **Request**
281 |
282 | URL
283 |
284 | POST /v2/customization?id=corp.product.{product_id}.list
285 |
286 | Header
287 |
288 | Content-Type:application/json
289 | Access-Token:"调用凭证"
290 |
291 | Content
292 |
293 | {
294 | "base_fields": [
295 | {
296 | "name": "",
297 | "label": "",
298 | "hidden":true,
299 | "sort": 0,
300 | "value_type": 1,
301 | "default_value":"默认值"
302 |
303 | }
304 | ]
305 | }
306 |
307 | **Response**
308 |
309 | Header
310 |
311 | HTTP/1.1 200 OK
312 |
313 | Content
314 |
315 | {
316 | "base_fields": [
317 | {
318 | "name": "",
319 | "label": "",
320 | "hidden":true,
321 | "sort": 0,
322 | "value_type": 1,
323 | "default_value":"默认值"
324 | }
325 | ]
326 | }
327 |
328 |
329 |
330 | ### 6). 获取产品个性化设置
331 |
332 | **Request**
333 |
334 | URL
335 |
336 | GET /v2/customization?id=corp.product.{product_id}.list
337 |
338 | Header
339 |
340 | Content-Type:application/json
341 | Access-Token:"调用凭证"
342 |
343 | Content
344 |
345 | 无
346 |
347 | **Response**
348 |
349 | Header
350 |
351 | HTTP/1.1 200 OK
352 |
353 | Content
354 |
355 | {
356 | "base_fields": [
357 | {
358 | "name": "",
359 | "label": "",
360 | "hidden":true,
361 | "sort": 0,
362 | "value_type": 1
363 | }
364 | ]
365 | }
366 |
367 |
368 | ## 扩展字段值的类型
369 | 枚举值 | 说明
370 | ---- | ----
371 | 1 | 字符串
372 | 2 | 32位整型(有符号)
373 | 3 | 浮点
374 |
375 |
376 |
377 |
378 |
379 |
380 | ## 3. 企业自定义设置
381 |
382 |
383 | ### 1). 设置
384 |
385 | 存储key-value值,有则覆盖,无则新增。
386 |
387 | **Reqeuest**
388 |
389 | URL
390 |
391 | POST /v2/customization?id=corp
392 |
393 | Header
394 |
395 | Content-Type:application/json
396 | Access-Token:"调用凭证"
397 |
398 | Content
399 |
400 | {
401 | "{key}": "{value}"
402 | }
403 |
404 | **Response**
405 |
406 | Header
407 |
408 | HTTP/1.1 200 OK
409 |
410 | Content
411 |
412 | {
413 | "{key}": "{value}"
414 | }
415 |
416 | ### 2). 获取
417 |
418 | **Reqeust**
419 |
420 | URL
421 |
422 | <<<<<<< HEAD
423 | GET /v2/customization?id=corp&key={k1},{k2}
424 | =======
425 | GET /v2/customization?id=corp&?key={k1},{k2}
426 | >>>>>>> master
427 |
428 | Header
429 |
430 | Content-Type:application/json
431 | Access-Token:"调用凭证"
432 |
433 | Content
434 |
435 | 无
436 |
437 |
438 | **Response**
439 |
440 | Header
441 |
442 | HTTP/1.1 200 OK
443 |
444 | Content
445 |
446 | {
447 | "{key}": "{value}"
448 | }
449 |
450 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
--------------------------------------------------------------------------------
/物联平台管理接口文档/企业日志服务接口.md:
--------------------------------------------------------------------------------
1 | # 企业日志服务接口
2 |
3 | ## 概述
4 |
5 | 云智易为企业记录企业成员关键的操作信息,使用本文档提供的接口可以查询企业管理台产生的日志信息。目前记录了两类信息:
6 | * 记录企业人员调用过的每一条API的关键信息。
7 | * 记录企业人员在使用平台过程中修改企业管理台内容的行为信息。
8 |
9 | ## *接口概览*
10 |
11 | 1. [查询被调用的API的历史记录](#api_log)
12 | 2. [查询企业成员的行为记录](#operation_log)
13 | 3. [查询设备关键日志](#device_log)
14 | 4. [附录](#appendix)
15 |
16 | ## *接口详情*
17 |
18 | ### **1.查询被调用的API的历史记录**
19 |
20 | **Request**
21 |
22 | URL
23 |
24 | POST /v2/log/api
25 |
26 |
27 | Header
28 |
29 | Content-Type:"application/json"
30 | Access-Token:"调用凭证"
31 |
32 | Content
33 |
34 | {
35 | "offset": 0,
36 | "limit": 10,
37 | "filter": [
38 | "字段A",
39 | "字段B"
40 | ],
41 | "query": {
42 | "filed1": {
43 | "$like": "字段值"
44 | },
45 | "filed3": {
46 | "$lt": "字段值"
47 | }
48 | },
49 | "order": {
50 | "filed1": "desc",
51 | "filed2": "asc"
52 | }
53 | }
54 |
55 | 字段 | 是否必须 | 描述
56 | ---- | ---- | ----
57 | offset |否|查询的偏移量,默认为0
58 | limit |否|查询返回量,默认10
59 | query |否|查询条件,可以根据添加一个或者多个字段来进行过滤查询,如果为空,则是无条件查询。create_date支持比较指令:$lt:小于该字段值, $lte:小于或等于字段值, $gt:大于该字段值,$gte:大于或等于该字段值
60 | order|否|返回结果以一个或者多个字段进行排序,desc代表降序,asc代表升序
61 |
62 | **Response**
63 |
64 | Content
65 |
66 | Header
67 |
68 | HTTP/1.1 200 OK
69 |
70 | Content
71 |
72 | {
73 | "count":20,
74 | "list":[{
75 | "opt":"操作者",
76 | "ip":"操作者所在的IP",
77 | "request_type":"http method类型",
78 | "api_url":"API url"
79 | "reqeust_header":"请求的header"
80 | "request_body": {},
81 | "response": "API返回的body",
82 | "code": 200,
83 | "create_date": "2016-05-26T10:00:00Z"
84 | },...
85 | ]
86 | }
87 |
88 | 字段 | 是否必须 | 描述
89 | ---- | ---- | ----
90 | opt|是|企业成员的Id
91 | ip|是|调用API的IP地址
92 | request_type|是|http method类型
93 | api_url|是| API的URL
94 | reqeust_header|是|请求的header部分
95 | request_body|是|请求的body
96 | response|是|返回的body
97 | code|是|返回码
98 | create_date|是| API被调用的时间
99 |
100 | ### **2.查询企业成员的行为记录**
101 |
102 | URL
103 |
104 | POST /v2/log/member_action
105 |
106 |
107 | Header
108 |
109 | Content-Type:"application/json"
110 | Access-Token:"调用凭证"
111 |
112 | Content
113 |
114 | {
115 | "offset": 0,
116 | "limit": 10,
117 | "filter": [
118 | "字段A",
119 | "字段B"
120 | ],
121 | "query": {
122 | "filed1": {
123 | "$like": "字段值"
124 | },
125 | "filed3": {
126 | "$lt": "字段值"
127 | }
128 | },
129 | "order": {
130 | "filed1": "desc",
131 | "filed2": "asc"
132 | }
133 | }
134 |
135 | 字段 | 是否必须 | 描述
136 | ---- | ---- | ----
137 | offset |否|查询的偏移量,默认为0
138 | limit |否|查询返回量,默认10
139 | query |否|查询条件,可以根据添加一个或者多个字段来进行过滤查询,如果为空,则是无条件查询。create_date支持比较指令:$lt:小于该字段值, $lte:小于或等于字段值, $gt:大于该字段值,$gte:大于或等于该字段值
140 | order|否|返回结果以一个或者多个字段进行排序,desc代表降序,asc代表升序
141 |
142 | **Response**
143 |
144 | Content
145 |
146 | Header
147 |
148 | HTTP/1.1 200 OK
149 |
150 | Content
151 |
152 | {
153 | "count":20,
154 | "list":[{
155 | "opt":"操作者",
156 | "ip":"操作者所在的IP",
157 | "summary":"日志摘要",
158 | "level":1,
159 | "operate_type":4,
160 | "api_url":"http://api-test.xlink.cn:8887/v2/developer/*"
161 | "create_date":"2016-05-17T17:30:16.437Z",
162 | "opt_name":"操作者名称"
163 | },...
164 | ]
165 | }
166 |
167 | 字段 | 是否必须 | 描述
168 | ---- | ---- | ----
169 | opt|是|企业成员的Id
170 | ip|是|操作者的IP地址
171 | summary|是|日志摘要
172 | api_url|是| API的URL
173 | level|是|日志信息的级别
174 | operate_type|是|企业成员操作管理台的类型
175 | create_date|是| 动作发生的时间
176 | opt_name | 是 | 操作者名称
177 |
178 |
179 | ### **3.查询设备关键日志
180 |
181 | **Request**
182 |
183 | URL
184 |
185 | POST /v2/log/device
186 |
187 |
188 | Header
189 |
190 | Content-Type:"application/json"
191 | Access-Token:"调用凭证"
192 |
193 | Content
194 |
195 | {
196 | "offset": 0,
197 | "limit": 10,
198 | "filter": [
199 | "字段A",
200 | "字段B"
201 | ],
202 | "query": {
203 | "filed1": {
204 | "$like": "字段值"
205 | },
206 | "filed3": {
207 | "$lt": "字段值"
208 | }
209 | },
210 | "order": {
211 | "filed1": "desc",
212 | "filed2": "asc"
213 | }
214 | }
215 |
216 | 字段 | 是否必须 | 描述
217 | ---- | ---- | ----
218 | offset |否|查询的偏移量,默认为0
219 | limit |否|查询返回量,默认10
220 | query |否|查询条件,可以根据添加一个或者多个字段来进行过滤查询,如果为空,则是无条件查询。create_date支持比较指令:$lt:小于该字段值, $lte:小于或等于字段值, $gt:大于该字段值,$gte:大于或等于该字段值
221 | order|否|返回结果以一个或者多个字段进行排序,desc代表降序,asc代表升序
222 |
223 | **Response**
224 |
225 | Content
226 |
227 | Header
228 |
229 | HTTP/1.1 200 OK
230 |
231 | Content
232 |
233 | {
234 | "count":20,
235 | "list":[{
236 | "product_id":"产品ID",
237 | "device_id":"设备Id",
238 | "summary":"操作概况",
239 | "log_type":"日志类型"
240 | "create_time":"操作产生时间"
241 | "detail": {}
242 | },...
243 | ]
244 | }
245 |
246 | 字段 | 是否必须 | 描述
247 | ---- | ---- | ----
248 | product_id|是|产品ID
249 | device_id|是|设备Id
250 | summary|是|操作概况
251 | log_type|是| 日志类型,见[设备日志类型](#device_log_type)
252 | create_time|是|操作产生时间
253 | detail|是|操作的详细情况,内容是一个json。见[设备日志的详细内容](#device_log_detail)
254 |
255 | **设备日志的详细内容**
256 |
257 | log_type = 1,
258 |
259 | {
260 | "active_ip":"设备激活时的ip地址"
261 | }
262 |
263 | log_type = 2,
264 |
265 | {
266 | "reset_ip":"设备重置时的ip地址"
267 | }
268 |
269 | log_type = 3,
270 |
271 | {
272 | "operator":"操作者",
273 | "user_id":"订阅的用户ID",
274 | "role":"订阅者的角色",
275 | "source":"订阅来源"
276 | }
277 |
278 | log_type = 4,
279 |
280 | {
281 | "operator":"操作者"
282 | }
283 |
284 | log_type = 5,
285 |
286 | {
287 | "operator":"操作者",
288 | "share_mode":"分享模式",
289 | "shared":"被分享者,如果没有则为0",
290 | "authority":"分享的设备权限"
291 | }
292 |
293 | log_type = 6,
294 |
295 | {
296 | "home_id":"家庭的ID",
297 | "operator":"操作者",
298 | "action":"0代表移出home,1代表添加到home"
299 | }
300 |
301 |
302 |
303 | ### **4.附录**
304 |
305 | **行为日志级别**
306 |
307 | 枚举值 | 说明
308 | ---- | ----
309 | 1 | INFO
310 | 2 | WARN
311 | 3 | ERROR
312 |
313 | **企业成员操作类型**
314 |
315 | 枚举值 | 说明
316 | ---- | ----
317 | 1 | 只读
318 | 2 | 更新
319 | 3 | 删除
320 | 4 | 新增
321 |
322 | **设备日志类型**
323 |
324 | 枚举值 | 说明
325 | ---- | ----
326 | 1 | 设备激活
327 | 2 | 设备重置
328 | 3 | 设备订阅
329 | 4 | 取消设备订阅
330 | 5 | 设备分享
331 | 6 | 设备加入/被移除home
--------------------------------------------------------------------------------
/物联平台管理接口文档/大客户接口.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # 大客户接口
4 |
5 | # **接口预览**
6 |
7 | 1. [大客户登陆认证](#heavy_buyer_auth)
8 | 2. [大客户刷新凭证](#heavy_buyer_refresh_token)
9 | 3. [创建一个组织](#create_organization)
10 | 4. [查看组织列表](#list_organization)
11 | 5. [修改组织信息](#update_organization)
12 | 6. [批量修改组织信息](#batch_update_organization)
13 | 7. [删除一个组织](#del_organization)
14 | 8. [批量删除组织](#batch_del_organization)
15 | 9. [创建组织下用户](#create_user)
16 | 10. [修改组织用户信息](#update_user)
17 | 11. [组织用户列表](#list_user)
18 | 12. [为组织分配设备](#alloc_device)
19 |
20 |
21 | # **接口详情**
22 |
23 | ### **1.大客户登陆认证**
24 |
25 |
26 | **Request**
27 | URL
28 |
29 | POST /v2/heavy_buyer_auth
30 |
31 | Header
32 |
33 | Content-Type:"application/json"
34 |
35 | Content
36 |
37 | {
38 | "heavy_buyer_id":"大客户ID",
39 | "username":"用户名",
40 | "password":"登陆密码"
41 | }
42 |
43 | 字段 | 是否必须 | 描述
44 | ---- | ---- | ----
45 | heavy_buyer_id | 是 | 大客户ID
46 | account | 是 | 可用手机或邮箱进行登录。
47 | password | 是 | 登陆认证密码,9-16位字符,必须同时包含大小写字母和数字。
48 |
49 | **Response**
50 |
51 | Header
52 |
53 | HTTP/1.1 200 OK
54 |
55 | Content
56 |
57 | {
58 | "heavy_buyer_id":"大客户ID",
59 | "username":"用户名",
60 | "access_token":"调用凭证",
61 | "refresh_token":"刷新凭证",
62 | "expire_in":"有效期(秒)"
63 | }
64 |
65 | 字段 | 是否必须 | 描述
66 | ----- | ---- | ----
67 | heavy_buyer_id | 是 | 大客户ID
68 | username | 是 | 用户名
69 | access_token | 是 | RESTful接口调用凭证
70 | refresh_token| 是 | RESTful接口刷新凭证
71 | expire_in | 是 | 调用凭证和刷新凭证的有效时间,单位:秒
72 |
73 |
74 | ### **2.大客户刷新凭证**
75 |
76 |
77 | 注:如果凭证超过了有效期,无法刷新凭证,只能重新进行[登陆认证](#heavy_buyer_auth)
78 |
79 | **Request**
80 |
81 | URL
82 |
83 | POST /v2/heavy_buyer/token/refresh
84 |
85 | Header
86 |
87 | Content-Type:"application/json"
88 | Access-Token:"调用凭证"
89 |
90 | Content
91 | {
92 | "refresh_token":"刷新凭证"
93 | }
94 |
95 | **Response**
96 |
97 | Header
98 |
99 | HTTP/1.1 200 OK
100 |
101 | Content
102 |
103 | {
104 | "access_token":"新的调用凭证",
105 | "refresh_token":"新的刷新凭证",
106 | "expire_in":"有效期(秒)"
107 | }
108 |
109 | 字段 | 是否必须 | 描述
110 | ---- | ---- | ----
111 | access_token | 是 | 新的调用凭证
112 | refresh_token | 是 | 新的刷新凭证
113 | expire_in | 是 | 有效期,单位:秒
114 |
115 |
116 |
117 | ## 组织管理
118 |
119 | > 组织管理是大客户下用于管理多个用户的组织架构,默认有一个根组织,根组织的ID为0。
120 |
121 |
122 |
123 | ### **3. 创建一个组织**
124 |
125 | 在大客户下创建一个新组织
126 |
127 | **Request**
128 |
129 | URL
130 |
131 | POST /v2/heavy_buyer/{heavy_buyer_id}/organization
132 |
133 | Header
134 |
135 | Content-Type:"application/json"
136 | Access-Token:"调用凭证"
137 |
138 | Content
139 |
140 | {
141 | "name":"组织名称",
142 | "parent":"所属某个组织",
143 | "sort":"组织序号"
144 | }
145 |
146 |
147 |
148 | **Response**
149 |
150 | Header
151 |
152 | HTTP/1.1 200 OK
153 |
154 | Content
155 |
156 | {
157 | "id": "组织ID",
158 | "parent": "父组织ID",
159 | "name": "名称",
160 | "sort":"组织序号",
161 | "create_time": "创建时间,例:2015-10-09T08:15:40.843Z"
162 | }
163 |
164 |
165 | ### **4. 查看组织列表**
166 |
167 | **Request**
168 |
169 | URL
170 |
171 | POST /v2/heavy_buyer/{heavy_buyer_id}/organization_list
172 |
173 | Header
174 |
175 | Content-Type:"application/json"
176 | Access-Token:"调用凭证"
177 |
178 | Content
179 |
180 | {
181 | "offset": "请求列表的偏移量",
182 | "limit": "请求数量",
183 | "query": {
184 | "filed1": {
185 | "$like": "字段值"
186 | },
187 | "filed3": {
188 | "$lt": "字段值"
189 | }
190 | }
191 | }
192 |
193 | **Response**
194 |
195 | Header
196 |
197 | HTTP/1.1 200 OK
198 |
199 | Content
200 |
201 | {
202 | "count": "总数量",
203 | "list": [
204 | {
205 | "id": "组织ID",
206 | "parent": "父组织ID",
207 | "name": "名称",
208 | "sort":"组织序号",
209 | "create_time": "创建时间,例:2015-10-09T08:15:40.843Z"
210 | }
211 | ]
212 | }
213 |
214 |
215 | ### **5. 修改组织信息**
216 |
217 | **Request**
218 |
219 | URL
220 |
221 | PUT /v2/heavy_buyer/{heavy_buyer_id}/organization/{id}
222 |
223 | Header
224 |
225 | Content-Type:"application/json"
226 | Access-Token:"调用凭证"
227 |
228 | Content
229 |
230 | {
231 | "name":"组织名称",
232 | "parent":"所属某个组织",
233 | "sort":"组织序号"
234 | }
235 |
236 | **Response**
237 |
238 | Header
239 |
240 | HTTP/1.1 200 OK
241 |
242 | Content
243 |
244 | {
245 | "id": "组织ID",
246 | "parent": "父组织ID",
247 | "name": "名称",
248 | "sort":"组织序号",
249 | "create_time": "创建时间,例:2015-10-09T08:15:40.843Z"
250 | }
251 |
252 |
253 | ### **6. 批量修改组织信息**
254 |
255 | **Request**
256 |
257 | URL
258 |
259 | PUT /v2/heavy_buyer/{heavy_buyer_id}/organization_list
260 |
261 | Header
262 |
263 | Content-Type:"application/json"
264 | Access-Token:"调用凭证"
265 |
266 | Content
267 |
268 | [
269 | {
270 | "id": "组织ID",
271 | "parent": "父组织ID",
272 | "name": "名称",
273 | "sort": "组织序号",
274 | }
275 | ]
276 |
277 | **Response**
278 |
279 | Header
280 |
281 | HTTP/1.1 200 OK
282 |
283 | Content
284 |
285 | [
286 | {
287 | "id": "组织ID",
288 | "parent": "父组织ID",
289 | "name": "名称",
290 | "sort": "组织序号",
291 | }
292 | ]
293 |
294 |
295 | ### **7. 删除一个组织**
296 |
297 |
298 | 删除组织后,组织下的子组织随之删除,组织下的所有用户将被迁移到根组织
299 |
300 | **Request**
301 |
302 | URL
303 |
304 | DELETE /v2/heavy_buyer/{heavy_buyer_id}/organization/{id}
305 |
306 | Header
307 |
308 | Content-Type:"application/json"
309 | Access-Token:"调用凭证"
310 |
311 | Content
312 |
313 | 无
314 |
315 | **Response**
316 |
317 | Header
318 |
319 | HTTP/1.1 200 OK
320 |
321 | Content
322 |
323 | 无
324 |
325 | ### **8. 批量删除组织**
326 |
327 |
328 | 删除组织后,组织下的子组织随之删除,组织下的所有用户将被迁移到根组织
329 |
330 | **Request**
331 |
332 | URL
333 |
334 | DELETE /v2/heavy_buyer/{heavy_buyer_id}/organization_list
335 |
336 | Header
337 |
338 | Content-Type:"application/json"
339 | Access-Token:"调用凭证"
340 |
341 | Content
342 |
343 | ["{id}","{id}"]
344 |
345 | **Response**
346 |
347 | Header
348 |
349 | HTTP/1.1 200 OK
350 |
351 | Content
352 |
353 | 无
354 |
355 | ### **9. 创建组织下用户**
356 |
357 | 只允许角色为管理员的组织用户创建用户。
358 |
359 | **Request**
360 |
361 | URL
362 |
363 | POST /v2/heavy_buyer/{heavy_buyer_id}/user
364 |
365 | Header
366 |
367 | Content-Type:"application/json"
368 | Access-Token:"调用凭证"
369 |
370 | Content
371 |
372 | {
373 | "username": "用户名",
374 | "password": "密码",
375 | "organization": "所属组织ID",
376 | "role":"角色",
377 | "contacter":"联系人",
378 | "contact_way":"联系方式"
379 | }
380 |
381 | 字段 | 是否必须 | 描述
382 | ---- | ---- | ----
383 | username | 是 | 用户名,不包含特殊字符,大客户下唯一,用于登录
384 | password | 是 | 登录密码
385 | organization | 是 | 所属组织,根组织为0。
386 | role | 是 | 角色,1:管理员,2:普通成员。
387 | contacter | 否 | 联系人
388 | contact_way | 否 | 联系方式
389 |
390 | **Response**
391 |
392 | Header
393 |
394 | HTTP/1.1 200 OK
395 |
396 | Content
397 |
398 | {
399 | "id": "组织用户ID",
400 | "username": "用户名",
401 | "organization": "所属组织ID",
402 | "role":"角色",
403 | "contacter":"联系人",
404 | "contact_way":"联系方式",
405 | "create_time": "创建时间,例:2015-10-09T08:15:40.843Z"
406 | }
407 |
408 | 字段 | 是否必须 | 描述
409 | ---- | ---- | ----
410 | id | 是 | 组织用户ID
411 | username | 是 | 用户名,不包含特殊字符,大客户下唯一,用于登录
412 | organization | 是 | 所属组织,根组织为0。
413 | role | 是 | 角色,1:管理员,2:普通成员。
414 | contacter | 否 | 联系人
415 | contact_way | 否 | 联系方式
416 |
417 | ### **10. 修改组织用户信息**
418 |
419 | 只允许角色为管理员的用户修改用户信息。
420 |
421 | **Request**
422 |
423 | URL
424 |
425 | PUT /v2/heavy_buyer/{heavy_buyer_id}/user/{id}
426 |
427 | Header
428 |
429 | Content-Type:"application/json"
430 | Access-Token:"调用凭证"
431 |
432 | Content
433 |
434 | {
435 | "username": "用户名",
436 | "password": "密码",
437 | "organization": "所属组织ID",
438 | "contacter":"联系人",
439 | "contact_way":"联系方式"
440 | }
441 |
442 | **Response**
443 |
444 | Header
445 |
446 | HTTP/1.1 200 OK
447 |
448 | Content
449 |
450 | {
451 | "id": "组织用户ID",
452 | "username": "用户名",
453 | "organization": "所属组织ID",
454 | "role":"角色",
455 | "contacter":"联系人",
456 | "contact_way":"联系方式",
457 | "create_time": "创建时间,例:2015-10-09T08:15:40.843Z"
458 | }
459 |
460 |
461 |
462 | ### **11. 组织用户列表**
463 |
464 | **Request**
465 |
466 | URL
467 |
468 | POST /v2/heavy_buyer/{heavy_buyer_id}/user_list
469 |
470 | Header
471 |
472 | Content-Type:"application/json"
473 | Access-Token:"调用凭证"
474 |
475 | Content
476 |
477 | {
478 | "offset": "请求列表的偏移量",
479 | "limit": "请求数量",
480 | "query": {
481 | "filed1": {
482 | "$like": "字段值"
483 | },
484 | "filed3": {
485 | "$lt": "字段值"
486 | }
487 | }
488 | }
489 |
490 | **Response**
491 |
492 | Header
493 |
494 | HTTP/1.1 200 OK
495 |
496 | Content
497 |
498 | {
499 | "count": "总数量",
500 | "list": [
501 | {
502 | "id": "组织用户ID",
503 | "username": "用户名",
504 | "organization": "所属组织ID",
505 | "role":"角色",
506 | "contacter":"联系人",
507 | "contact_way":"联系方式",
508 | "create_time": "创建时间,例:2015-10-09T08:15:40.843Z"
509 | }
510 | ]
511 | }
512 |
513 |
514 |
515 | ### **12. 为组织分配设备**
516 |
517 | **Request**
518 |
519 | URL
520 |
521 | POST /v2/heavy_buyer/{heavy_buyer_id}/organization/{id}/grant_device
522 |
523 | Header
524 |
525 | Content-Type:"application/json"
526 | Access-Token:"调用凭证"
527 |
528 | Content
529 |
530 | [
531 | {
532 | "device_id": "{device_id}"
533 | },
534 | {
535 | "device_id": "{device_id}"
536 | }
537 | ]
538 |
539 | **Response**
540 |
541 | Header
542 |
543 | HTTP/1.1 200 OK
544 |
545 | Content
546 |
547 | [
548 | {
549 | "device_id": "{device_id}"
550 | },
551 | {
552 | "device_id": "{device_id}"
553 | }
554 | ]
555 |
556 |
557 |
558 |
559 |
560 |
561 |
562 |
563 |
564 |
565 |
566 |
567 |
568 |
569 |
570 |
571 |
572 |
573 |
574 |
575 |
576 |
577 |
578 |
579 |
580 |
581 |
582 |
583 |
584 |
585 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
--------------------------------------------------------------------------------
/物联平台管理接口文档/大客户管理接口.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 | # 大客户管理接口
3 |
4 | # **接口预览**
5 |
6 | 1. [添加大客户](#addHeavybuyer)
7 | 2. [修改大客户](#modifyHeavybuyer)
8 | 3. [启/停用大客户](#disableHeavybuyer)
9 | 4. [删除大客户](#deleteHeavybuyer)
10 | 5. [获取大客户列表](#getHeavybuyerList)
11 | <<<<<<< HEAD
12 | 6. [为大客户授权产品](#grant_product)
13 | 7. [为大客户授权设备](#grant_device)
14 | 8. [大客户入口配置](#set_entry_config)
15 | 9. [获取大客户入口配置信息](#get_entry_config)
16 | =======
17 | 6. [大客户登陆认证](#heavy_buyer_auth")
18 | 7. [大客户刷新凭证](#heavy_buyer_refresh_token)
19 | >>>>>>> master
20 |
21 | # **接口详情**
22 |
23 |
24 | ### **1. 添加大客户**
25 |
26 |
27 |
28 | #### Request ####
29 |
30 | *URL*
31 |
32 | POST /v2/heavy_buyer
33 |
34 | *Header*
35 |
36 | Content-Type:"application/json"
37 | Access-Token:"Corp调用凭证"
38 |
39 | *Content*
40 |
41 | {
42 | "name":"大客户名称",
43 | "industry":"行业",
44 | "location":"地址",
45 | "contacter":"联系人",
46 | "contact_way":"联系方式",
47 | "country":"所在的国家",
48 | "province":"所在的省份",
49 | "city":"所在的城市"
50 | }
51 |
52 | | 字段 | 是否必须 | 描述 |
53 | | ---- | ---- | ---- |
54 | | name | 是 | 大客户名称 |
55 | | industry | 否 | 行业 |
56 | | location | 否 | 地址 |
57 | | contacter | 否 | 联系人 |
58 | | contact_way | 否 | 联系方式 |
59 | | country | 否 | 所在的国家 |
60 | | province | 否 | 所在的省份 |
61 | | city | 否 | 所在的城市 |
62 |
63 |
64 | #### Response ####
65 |
66 | *Header*
67 |
68 | HTTP/1.1 200 OK
69 |
70 | *Content*
71 |
72 | {
73 | "id":"大客户Id",
74 | "name":"用戶名",
75 | "industry":"行业",
76 | "location":"地址",
77 | "contacter":"联系人",
78 | "contact_way":"联系方式",
79 | "device_sum":"设备总数",
80 | "status":"状态",
81 | "create_time":"创建时间",
82 | "country":"所在的国家",
83 | "province":"所在的省份",
84 | "city":"所在的城市",
85 | }
86 |
87 |
88 | | 字段 | 是否必须 | 描述 |
89 | | ---- | ---- | ---- |
90 | | id | 是 | 大客户的id |
91 | | name | 是 | 大客户用戶名 |
92 | | industry | 是 | 行业 |
93 | | location | 是 | 地址 |
94 | | contacter | 是 | 联系人 |
95 | | contact_way | 是 | 联系方式 |
96 | | device_sum | 是 | 设备总数 |
97 | | status | 是 | 大客户的状态,详细参见附录[<大客户状态>](#heavyBuyerStatusType) |
98 | | country | 是 | 所在的国家 |
99 | | province | 是 | 所在的省份 |
100 | | city | 是| 所在的城市 |
101 | | create_time | 是 | 创建时间 |
102 |
103 | ### **2. 修改大客户**
104 |
105 | #### Request ####
106 |
107 | *URL*
108 |
109 | PUT /v2/heavy_buyer/{heavy_buyer_id}
110 |
111 | *Header*
112 |
113 | Content-Type:"application/json"
114 | Access-Token:"Corp调用凭证"
115 |
116 | *Content*
117 |
118 | {
119 | "name":"大客户名称",
120 | "industry":"行业",
121 | "location":"地址",
122 | "contacter":"联系人",
123 | "contact_way":"联系方式",
124 | "country":"所在的国家",
125 | "province":"所在的省份",
126 | "city":"所在的城市"
127 | }
128 |
129 | | 字段 | 是否必须 | 描述 |
130 | | ---- | ---- | ---- |
131 | | name | 否 | 大客户用戶名 |
132 | | industry | 否 | 行业 |
133 | | location | 否 | 地址 |
134 | | contacter | 否 | 联系人 |
135 | | contact_way | 否 | 联系方式 |
136 | | country | 否 | 所在的国家 |
137 | | province | 否 | 所在的省份 |
138 | | city | 否 | 所在的城市 |
139 |
140 |
141 | #### Response ####
142 |
143 | *Header*
144 |
145 | HTTP/1.1 200 OK
146 |
147 | *Content*
148 |
149 | {
150 | "id":"大客户Id",
151 | "name":"大客户名称",
152 | "industry":"行业",
153 | "location":"地址",
154 | "contacter":"联系人",
155 | "contact_way":"联系方式",
156 | "device_sum":"设备总数",
157 | "status":"状态",
158 | "country":"所在的国家",
159 | "province":"所在的省份",
160 | "city":"所在的城市",
161 | "create_time":"创建时间"
162 | }
163 |
164 |
165 | | 字段 | 是否必须 | 描述 |
166 | | ---- | ---- | ---- |
167 | | id | 是 | 经销商的id |
168 | | name | 是 | 大客户名称 |
169 | | industry | 是 | 行业 |
170 | | location | 是 | 地址 |
171 | | contacter | 是 | 联系人 |
172 | | contact_way | 是 | 联系方式 |
173 | | device_sum | 是 | 设备总数 |
174 | | status | 是 | 大客户的状态,详细参见附录[<大客户状态>](#heavyBuyerStatusType) |
175 | | country | 是 | 所在的国家 |
176 | | province | 是 | 所在的省份 |
177 | | city | 是| 所在的城市 |
178 | | create_time | 是 | 创建时间 |
179 |
180 | ### **3. 启/停用大客户**
181 |
182 | *URL*
183 |
184 | PUT /v2/heavy_buyer/{heavy_buyer_id}/status/{status}
185 |
186 | *Header*
187 |
188 | Content-Type:"application/json"
189 | Access-Token:"Corp调用凭证"
190 |
191 | *Content*
192 |
193 | 无
194 |
195 | #### Response ####
196 |
197 | *Header*
198 |
199 | HTTP/1.1 200 OK
200 |
201 | *Content*
202 |
203 | 无
204 |
205 | ### **4. 删除大客户**
206 |
207 | *URL*
208 |
209 | DELETE /v2/heavy_buyer/{heavy_buyer_id}
210 |
211 | *Header*
212 |
213 | Content-Type:"application/json"
214 | Access-Token:"Corp调用凭证"
215 |
216 | *Content*
217 |
218 | 无
219 |
220 | ### **5. 获取大客户列表**
221 |
222 | #### Request ####
223 |
224 | *URL*
225 |
226 | POST /v2/heavy_buyer_list
227 |
228 | *Header*
229 |
230 | Content-Type:"application/json"
231 | Access-Token:"Corp调用凭证"
232 |
233 | *Content*
234 |
235 | {
236 | "offset": "请求列表的偏移量",
237 | "limit": "请求数量",
238 | "filter": [
239 | "字段A",
240 | "字段B"
241 | ],
242 | "query": {
243 | "filed1": {
244 | "$like": "字段值"
245 | },
246 | "filed3": {
247 | "$lt": "字段值"
248 | }
249 | },
250 | "order": {
251 | "filed1": "desc",
252 | "filed2": "asc"
253 | }
254 | }
255 |
256 | 字段 | 是否必须 | 描述
257 | ---- | ---- | ----
258 | offset | 否 | 从某个偏移量开始请求,默认为0
259 | limit | 否 | 请求的条目数量,默认为10
260 | order | 否 | 可以指定通过设备默认的某个字段排序,desc降序,asc升序
261 | filter |否 | 字段过滤,集合类型,可以指定返回结果列表的字段,可以
包含扩展属性字段
262 | query | 否 | 查询条件,可以根据不同字段加上不同的比较指令来查询,查
询条件字段包含设备所有默认字段,不支持扩展属性字段,支
持比较指令包含如下:
$in:包含于该列表任意一个值
$lt:小于该字段值
$lte:小于或等于字段值
$gt:大于该字段值
$gte:大于或等于该字段值
$like:模糊匹配该字段值
263 |
264 | #### Response ####
265 |
266 | *Header*
267 |
268 | HTTP/1.1 200 OK
269 |
270 | *Content*
271 |
272 | {
273 | "count":"实际返回的成员条目数量",
274 | "list":
275 | [
276 | {
277 | "id":"大客户Id",
278 | "name":"名称",
279 | "industry":"行业",
280 | "location":"地址",
281 | "contacter":"联系人",
282 | "contact_way":"联系方式",
283 | "device_sum":"设备总数",
284 | "status":"状态",
285 | "country":"所在的国家",
286 | "province":"所在的省份",
287 | "city":"所在的城市",
288 | "create_time":"创建时间",
289 | }
290 | ]
291 | }
292 |
293 |
294 | | 字段 | 是否必须 | 描述 |
295 | | ---- | ---- | ---- |
296 | | id | 是 | 经销商的id |
297 | | name | 是 | 大客户名称 |
298 | | industry | 是 | 行业 |
299 | | location | 是 | 地址 |
300 | | contacter | 是 | 联系人 |
301 | | contact_way | 是 | 联系方式 |
302 | | device_sum | 是 | 设备总数 |
303 | | status | 是 | 大客户的状态,详细参见附录[<大客户状态>](#heavyBuyerStatusType) |
304 | | country | 是 | 所在的国家 |
305 | | province | 是 | 所在的省份 |
306 | | city | 是| 所在的城市 |
307 | | create_time | 是 | 创建时间 |
308 |
309 |
310 | ### **6. 为大客户授权产品**
311 |
312 | #### Request ####
313 |
314 | *URL*
315 |
316 | POST /v2/heavy_buyer/{heavy_buyer_id}/grant_product
317 |
318 | *Header*
319 |
320 | Content-Type:"application/json"
321 | Access-Token:"Corp调用凭证"
322 |
323 |
324 | *Content*
325 |
326 | [
327 | "{product_id}",
328 | "{product_id}"
329 | ]
330 |
331 | #### Response####
332 |
333 | *Header*
334 |
335 | HTTP/1.1 200 OK
336 |
337 | *Content*
338 |
339 | [
340 | "{product_id}",
341 | "{product_id}"
342 | ]
343 |
344 |
345 | ### **7. 为大客户授权设备**
346 |
347 | 授权的设备将存在于大客户的根组织中,由大客户自行分配
348 |
349 | #### Request ####
350 |
351 | *URL*
352 |
353 | POST /v2/heavy_buyer/{heavy_buyer_id}/grant_device?product_id={product_id}
354 |
355 | *Header*
356 |
357 | Content-Type:"application/json"
358 | Access-Token:"Corp调用凭证"
359 |
360 | *Content*
361 |
362 | [
363 | {
364 | "mac": "{mac}",
365 | "{key}":"{value}"
366 | },
367 | {
368 | "mac": "{mac}",
369 | "{key}":"{value}"
370 | }
371 | ]
372 |
373 | #### Response####
374 |
375 | *Header*
376 |
377 | HTTP/1.1 200 OK
378 |
379 | *Content*
380 |
381 | [
382 | {
383 | "mac": "{mac}",
384 | "{key}":"{value}"
385 | },
386 | {
387 | "mac": "{mac}",
388 | "{key}":"{value}"
389 | }
390 | ]
391 |
392 |
393 |
394 | ### **8. 大客户入口配置**
395 |
396 | #### Request ####
397 |
398 |
399 | *URL*
400 |
401 | POST /v2/heavy_buyer/{heavy_buyer_id}/entry_config
402 |
403 | *Header*
404 |
405 | Content-Type:"application/json"
406 | Access-Token:"调用凭证"
407 |
408 | *Content*
409 |
410 | {
411 | "is_enable": "是否开启独立入口",
412 | "domain": "域名",
413 | "login_context": "登录页文案",
414 | "logo_url": "logo地址",
415 | "product": [
416 | {
417 | "product_id": "产品ID",
418 | "is_visible": "是否可见"
419 | }
420 | ],
421 | "module": [
422 | {
423 | "type": "模块类型",
424 | "is_visible": "是否可见"
425 | }
426 | ]
427 | }
428 |
429 | #### Response####
430 |
431 | *Header*
432 |
433 | HTTP/1.1 200 OK
434 |
435 | *Content*
436 |
437 |
438 | {
439 | "is_enable": "是否开启独立入口",
440 | "domain": "域名",
441 | "login_context": "登录页文案",
442 | "logo_url": "logo地址",
443 | "product": [
444 | {
445 | "product_id": "产品ID",
446 | "is_visible": "是否可见"
447 | }
448 | ],
449 | "module": [
450 | {
451 | "type": "模块类型",
452 | "is_visible": "是否可见"
453 | }
454 | ]
455 | }
456 |
457 | ### **9. 获取大客户入口配置信息**
458 |
459 | <<<<<<< HEAD
460 | #### Request ####
461 |
462 |
463 | *URL*
464 |
465 | GET /v2/heavy_buyer/{heavy_buyer_id}/entry_config
466 |
467 | *Header*
468 |
469 | Content-Type:"application/json"
470 | Access-Token:"调用凭证"
471 |
472 | *Content*
473 |
474 | 无
475 |
476 |
477 | #### Response####
478 |
479 |
480 | *Header*
481 |
482 | HTTP/1.1 200 OK
483 |
484 | *Content*
485 |
486 |
487 | {
488 | "is_enable": "是否开启独立入口",
489 | "domain": "域名",
490 | "login_context": "登录页文案",
491 | "logo_url": "logo地址",
492 | "product": [
493 | {
494 | "product_id": "产品ID",
495 | "is_visible": "是否可见"
496 | }
497 | ],
498 | "module": [
499 | {
500 | "type": "模块类型",
501 | "is_visible": "是否可见"
502 | }
503 | ]
504 | }
505 |
506 |
507 |
508 | =======
509 | >>>>>>> master
510 | # 附录
511 |
512 | ### **1.大客户状态**
513 |
514 | 枚举值 | 说明
515 | ---- | ----
516 | 0 | 停用
517 | 1 | 可用
518 |
519 | ### **2. 产品菜单类型**
520 |
521 | 枚举值 | 说明
522 | ---- | ----
523 | summary | 概览
524 | device_list | 设备管理
525 | alert | 告警信息
526 | device_map | 设备地图
527 | analyse | 产品分析
528 |
529 |
530 | ### **3. 模块类型**
531 |
532 | 枚举值 | 说明
533 | ---- | ----
534 | summary | 概览
535 | device_list | 设备管理
536 | alert | 告警信息
537 | device_map | 设备地图
538 | analyse | 产品分析
539 | helpdesk | 用户反馈
540 | warranty | 维保
541 |
542 |
543 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
544 |
--------------------------------------------------------------------------------
/物联平台管理接口文档/子设备管理接口.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # 子设备管理接口
4 |
5 | * 网关设备可以设置多个子设备,并在平台进行存储管理与配置。
6 | * 平台暂时只支持以下连接方式的产品:
7 | 1. Zigbee网关;
8 | 2. BLE Mesh设备;
9 |
10 | ## **接口预览**
11 | 1. [初始化子设备子设备](#initiate_subdevices)
12 | 2. [获取子设备信息](#get_subdevices)
13 |
14 | ## **接口详情**
15 |
16 | ### **1.子设备的初始化**
17 |
18 | * 初始化子设备信息。
19 | * 该接口可以反复调用,调用该接口会覆盖掉已存在的子设备信息,可以用来完成全量更新设备列表动作。
20 |
21 | **Request**
22 |
23 | URL
24 |
25 | POST /v2/product/{product_id}/device/{device_id}/subdevices
26 |
27 |
28 | 字段 | 是否必须 | 描述
29 | ---- | ---- | ----
30 | product_id | 是 | 产品ID
31 | device_id | 是 | 设备ID
32 |
33 | Header
34 |
35 | Content-Type:"application/json"
36 | Access-Token:"调用凭证"
37 |
38 | Content
39 |
40 | ```
41 | {
42 | "g": {
43 | "v": "1.0",
44 | "n": "My Gateway",
45 | "m": "FF0000000001",
46 | "c": {
47 | "avs": {
48 | "v": 1,
49 | "p": "binary",
50 | "d": "mac"
51 | }
52 | }
53 | },
54 | "d": {
55 | "FE0000000001": {
56 | "n": "Living room light",
57 | "m": "FE0000000001",
58 | "c": {
59 | "avs": [
60 | 0,
61 | 1,
62 | 16,
63 | 17,
64 | 18
65 | ]
66 | },
67 | "v": "1.0",
68 | "ex": {
69 | "type": 1
70 | }
71 | },
72 | "2": {
73 | "n": "Socket of my bedroom",
74 | "m": "FE0000000002",
75 | "c": {
76 | "avs": [
77 | 0,
78 | 1
79 | ]
80 | },
81 | "v": "1.1",
82 | "ex": {
83 | "type": 2
84 | }
85 | }
86 | }
87 | }
88 | ```
89 |
90 | 字段 | 是否必须 | 描述
91 | ---- | ---- | ----
92 | | g.v | 否 | 固件版本号 |
93 | | g.n | 是 | 网关名称 |
94 | | g.m | 是 | 网关的MAC地址 |
95 | | g.c | 是 | 网关的能力, |
96 | | g.c.avs | 是 | 网关一个能力的代码,此处的avs只是一个例子,表示网关支持AVS联动。|
97 | | g.c.avs.v | 是 | avs skill的版本号,默认为1 |
98 | | g.c.avs.p | 是 | AVS控制指令数据格式,值为json或binary,默认为json|
99 | | g.c.avs.d | 是 | 子设备标识的类型,值为id或mac,默认为id |
100 | | d | 是 | 子设备列表 |
101 | | d.{deviceId} | 是 | 子设备的标识 |
102 | | d.{deviceId}.n | 是 | 子设备名称 |
103 | | d.{deviceId}.m | 是 | 子设备的mac地址 |
104 | | d.{deviceId}.c | 是 | 子设备的能力,必须包含于g.c结构体定义的能力。 |
105 | | d.{deviceId}.c.avs | 是 | AVS(Echo)联动,设备支持的控制指令集合,是一个数组。 控制指令列表枚举见[附录](#avs_action_list_bin) |
106 | | d.{deviceId}.v | 是 | 子设备版本 |
107 | | d.{deviceId}.ex | 是 | 子设备的扩展属性 |
108 |
109 | **Response**
110 |
111 | Header
112 |
113 | HTTP/1.1 200 OK
114 |
115 | Content
116 |
117 | 无
118 |
119 | ### **2.获取子设备信息**
120 |
121 | 获取网关和所有子设备信息。
122 |
123 | **Request**
124 |
125 | URL
126 |
127 | GET /v2/product/{product_id}/device/{device_id}/subdevices
128 |
129 |
130 | 字段 | 是否必须 | 描述
131 | ---- | ---- | ----
132 | product_id | 是 | 产品ID
133 | device_id | 是 | 设备ID
134 |
135 | Header
136 |
137 | Content-Type:"application/json"
138 | Access-Token:"调用凭证"
139 |
140 |
141 | Content
142 |
143 | 无
144 |
145 |
146 | **Response**
147 |
148 | Header
149 |
150 | HTTP/1.1 200 OK
151 |
152 | Content
153 |
154 | ```
155 | {
156 | "v": 1,
157 | "g": {
158 | "v": "1.0",
159 | "n": "My Gateway",
160 | "m": "FF0000000001",
161 | "c": {
162 | "avs": {
163 | "v": 1,
164 | "p": "binary",
165 | "d": "mac"
166 | }
167 | }
168 | },
169 | "d": {
170 | "FE0000000001": {
171 | "n": "Living room light",
172 | "m": "FE0000000001",
173 | "c": {
174 | "avs": [
175 | 0,
176 | 1,
177 | 16,
178 | 17,
179 | 18
180 | ]
181 | },
182 | "v": "1.0",
183 | "ex": {
184 | "type": 1
185 | }
186 | },
187 | "2": {
188 | "n": "Socket of my bedroom",
189 | "m": "FE0000000002",
190 | "c": {
191 | "avs": [
192 | 0,
193 | 1
194 | ]
195 | },
196 | "v": "1.1",
197 | "ex": {
198 | "type": 2
199 | }
200 | }
201 | }
202 | }
203 | ```
204 |
205 | 字段 | 是否必须 | 描述
206 | ---- | ---- | ----
207 | | v | 是 | 配置的版本号 |
208 | | g.v | 否 | 固件版本号 |
209 | | g.n | 是 | 网关名称 |
210 | | g.m | 是 | 网关的MAC地址 |
211 | | g.c | 是 | 网关的能力, |
212 | | g.c.avs | 是 | 网关一个能力的代码,此处的avs只是一个例子。|
213 | | g.c.avs.v | 是 | avs skill的版本号,默认为1 |
214 | | g.c.avs.p | 是 | AVS控制指令数据格式,值为json或binary,默认为json|
215 | | g.c.avs.d | 是 | 子设备标识的类型,值为id或mac,默认为id |
216 | | d | 是 | 子设备列表 |
217 | | d.{deviceId} | 是 | 子设备的标识 |
218 | | d.{deviceId}.n | 是 | 子设备名称 |
219 | | d.{deviceId}.m | 是 | 子设备的mac地址 |
220 | | d.{deviceId}.c | 是 | 子设备的能力,必须包含于g.c结构体定义的能力。 |
221 | | d.{deviceId}.c.avs | 是 | AVS(Echo)联动,设备支持的控制指令集合,是一个数组。 控制指令列表枚举见[附录](#avs_action_list_bin) |
222 | | d.{deviceId}.v | 是 | 子设备版本 |
223 | | d.{deviceId}.ex | 是 | 子设备的扩展属性 |
224 |
225 | ## 附录
226 |
227 | ### 1. AVS动作列表
228 |
229 | | 指令 | 值 |
230 | | --- | --- |
231 | | 开(灯) | 0x00 |
232 | | 关(灯) | 0x01 |
233 | | 设置(亮度)值 | 0x10 |
234 | | 增高(亮度)值 | 0x11 |
235 | | 降低(亮度)值 | 0x12 |
236 |
237 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
--------------------------------------------------------------------------------
/物联平台管理接口文档/导出CSV接口.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # 导出CSV接口
4 |
5 | 本文档包括各种导出CSV任务接口, 包括设备列表/用户列表/经销商列表等等。
6 |
7 | # **接口预览**
8 |
9 | 1. [创建导出CSV任务](#addExport)
10 | 2. [获取单个导出任务](#getExport)
11 | 3. [获取导出任务授权链接](#authLinkUrl)
12 | 4. [导出任务列表](#listExport)
13 |
14 | # **接口详情**
15 |
16 | ### **1.创建导出CSV任务**
17 |
18 | 企业管理员增加单个导出任务
19 |
20 | **Request**
21 |
22 | URL
23 |
24 | POST /v2/export_task
25 |
26 | Header
27 |
28 | Content-Type:application/json
29 | Access-Token:"调用凭证"
30 |
31 | Content
32 |
33 | {
34 | "name":"导出任务名称",
35 | "describe":"导出任务描述",
36 | "type":"导出任务类型",
37 | "params":{
38 | "filter": [
39 | "字段A",
40 | "字段B"
41 | ],
42 | "query": {
43 | "filed1": {
44 | "$like": "字段值"
45 | },
46 | "filed3": {
47 | "$lt": "字段值"
48 | }
49 | },
50 | "order": {
51 | "filed1": "desc",
52 | "filed2": "asc"
53 | }
54 | },
55 | "extend":{
56 | "app_id":"目前仅用于维保列表, 用于查找创建访问node服务的token",
57 | "product_id":"目前仅用于设备列表"
58 | }
59 | }
60 |
61 | 字段|是否必须|描述
62 | ---- | ---- | ----
63 | name | 是 | 导出任务名称
64 | describe | 是 | 导出任务描述
65 | type | 是 | 导出任务类型, 见[附录](#export_task_type)
66 | params | 是 | 导出任务参数, 用于查询需要导出数据; 导出聚合设备列表时, 请参照***产品与设备管理接口***中的***设备聚合接口***整个请求条件
67 | query | 否 | 当导出任务为设备列表时, 必须指定产品id, 且以$in出现只取一个; 当
68 | extend | 否 | 额外条件, app_id:目前仅用于维保列表, 用于查找创建访问node服务的token;product_id目前仅用于设备列表/聚合设备列表
69 |
70 | **Response**
71 |
72 | Header
73 |
74 | HTTP/1.1 200 OK
75 |
76 | Content
77 |
78 | {
79 | "id":"导出任务id"
80 | }
81 |
82 | ### **2.获取单个导出任务**
83 |
84 | 企业管理员获取单个导出任务详情
85 |
86 | **Request**
87 |
88 | URL
89 |
90 | GET /v2/export_task/{export_task_id}
91 |
92 | Header
93 |
94 | Content-Type:application/json
95 | Access-Token:"调用凭证"
96 |
97 | Content
98 |
99 | 无
100 |
101 |
102 | **Response**
103 |
104 | Header
105 |
106 | HTTP/1.1 200 OK
107 |
108 | Content
109 |
110 | {
111 | "id": "导出任务id",
112 | "creator_id": "创建任务成员id",
113 | "creator_name": "创建任务成员名称",
114 | "name": "导出任务名称",
115 | "describe": "导出任务描述",
116 | "type": "导出任务类型。",
117 | "status": "导出任务状态",
118 | "params": "导出任务参数",
119 | "size": "导出任务生成csv大小",
120 | "link_url": "链接地址, 未授权",
121 | "create_time": "创建时间",
122 | "result_desc": "结果描述",
123 | "total":"总上传的对象数,用于计算进度",
124 | "finished":"完成上传的对象数,用于计算进度",
125 | "begin_time":"任务开始执行时间",
126 | "end_time":"任务结束执行时间",
127 | "extend":{
128 | "app_id":"平台appid, 仅在维保有效",
129 | "product_id":"产品id, 目前仅用于设备列表"
130 | }
131 | }
132 |
133 | 字段|是否必须|描述
134 | ---- | ---- | ----
135 | id | 是 | 导出任务id
136 | creator_id | 是 | 创建任务成员id
137 | creator_name | 是 | 创建任务成员名称
138 | name | 是 | 导出任务名称
139 | describe | 是 | 导出任务描述
140 | type | 是 | 导出任务类型,见[附录](#export_task_type)
141 | status | 是 | 导出任务状态, 见[附录](#export_task_status)
142 | params | 是 | 导出任务参数
143 | size | 是 | 导出任务生成csv大小
144 | link_url | 是 | 链接地址, 未授权
145 | create_time | 是 | 创建时间,例:2014-10-09T08:15:40.843Z
146 | result_desc | 是 | 结果描述
147 | total | 是 | 总上传的对象数,用于计算进度
148 | finished | 是 | 完成上传的对象数,用于计算进度
149 | begin_time | 是 | 任务开始执行时间
150 | end_time | 是 | 任务结束执行时间
151 | extend.app_id | 是 | 平台appid, 目前仅在维保有效
152 | extend.product_id | 是 | 平台product_id, 目前仅在设备列表有效
153 |
154 |
155 | ### **3.获取导出任务授权链接**
156 |
157 | 企业管理员获取导出任务结果csv下载地址
158 |
159 | **Request**
160 |
161 | URL
162 |
163 | GET /v2/export_task/{export_task_id}/auth_link
164 |
165 | Header
166 |
167 | Content-Type:application/json
168 | Access-Token:"调用凭证"
169 |
170 | Content
171 |
172 | 无
173 |
174 |
175 | **Response**
176 |
177 | Header
178 |
179 | HTTP/1.1 200 OK
180 |
181 | Content
182 |
183 | {
184 | "link_url":"授权过的下载链接"
185 | }
186 |
187 | 字段|是否必须|描述
188 | ---- | ---- | ----
189 | link_url | 是 | 授权过的下载链接, 具有时效性
190 |
191 |
192 | ### **4.导出任务列表**
193 |
194 | 企业管理员查看企业下所有的导出列表。
195 |
196 | **Request**
197 |
198 | URL
199 |
200 | POST /v2/export_tasks
201 |
202 | Header
203 |
204 | Content-Type:application/json
205 | Access-Token:"调用凭证"
206 |
207 | Content
208 |
209 | {
210 | "offset": "请求列表的偏移量",
211 | "limit": "请求数量",
212 | "filter": [
213 | "字段A",
214 | "字段B"
215 | ],
216 | "query": {
217 | "filed1": {
218 | "$like": "字段值"
219 | },
220 | "filed3": {
221 | "$lt": "字段值"
222 | }
223 | },
224 | "order": {
225 | "filed1": "desc",
226 | "filed2": "asc"
227 | }
228 | }
229 |
230 | 字段 | 是否必须 | 描述
231 | ---- | ---- | ----
232 | offset | 否 | 从某个偏移量开始请求,默认为0
233 | limit | 否 | 请求的条目数量,默认为10
234 | order | 否 | 可以指定通过设备默认的某个字段排序,desc降序,asc升序
235 | filter |否 | 字段过滤,集合类型,可以指定返回结果列表的字段,可以
包含扩展属性字段
236 | query | 否 | 查询条件,可以根据不同字段加上不同的比较指令来查询,查
询条件字段包含设备所有默认字段,不支持扩展属性字段,支
持比较指令包含如下:
$in:包含于该列表任意一个值
$lt:小于该字段值
$lte:小于或等于字段值
$gt:大于该字段值
$gte:大于或等于该字段值
$like:模糊匹配该字段值
237 |
238 | **Response**
239 |
240 | Header
241 |
242 | HTTP/1.1 200 OK
243 |
244 | Content
245 |
246 | {
247 | "count": "总数量",
248 | "list": [
249 | {
250 | "id": "导出任务id",
251 | "creator_id": "创建任务成员id",
252 | "creator_name": "创建任务成员名称",
253 | "name": "导出任务名称",
254 | "describe": "导出任务描述",
255 | "type": "导出任务类型。",
256 | "status": "导出任务状态",
257 | "params": "导出任务参数",
258 | "size": "导出任务生成csv大小",
259 | "link_url": "链接地址, 未授权",
260 | "create_time": "创建时间",
261 | "result_desc": "结果描述",
262 | "total":"总上传的对象数,用于计算进度",
263 | "finished":"完成上传的对象数,用于计算进度",
264 | "begin_time":"任务开始执行时间",
265 | "end_time":"任务结束执行时间"
266 | }
267 | ]
268 | }
269 |
270 | 字段|是否必须|描述
271 | ---- | ---- | ----
272 | id | 是 | 导出任务id
273 | creator_id | 是 | 创建任务成员id
274 | creator_name | 是 | 创建任务成员名称
275 | name | 是 | 导出任务名称
276 | describe | 是 | 导出任务描述
277 | type | 是 | 导出任务类型,见[附录](#export_task_type)
278 | status | 是 | 导出任务状态, 见[附录](#export_task_status)
279 | params | 是 | 导出任务参数
280 | size | 是 | 导出任务生成csv大小
281 | link_url | 是 | 链接地址, 未授权
282 | create_time | 是 | 创建时间,例:2014-10-09T08:15:40.843Z
283 | result_desc | 是 | 结果描述
284 | total | 是 | 总上传的对象数,用于计算进度
285 | finished | 是 | 完成上传的对象数,用于计算进度
286 | begin_time | 是 | 任务开始执行时间
287 | end_time | 是 | 任务结束执行时间
288 |
289 |
290 | # 附录
291 |
292 | ### **1.导出任务类型**
293 |
294 | | 名称 | 值 | 说明 |
295 | | --- | --- | --- |
296 | | Device | 1 | 设备列表 |
297 | | User | 2 | 用户列表 |
298 | | Alert | 3 | 告警信息列表 |
299 | | Heavybuyer | 4 | 大客户列表 |
300 | | Dealer | 5 | 经销商列表 |
301 | | Warranty | 6 | 维保列表 |
302 | | DeviceSessionLog | 7 | 设备上下线 |
303 | | WechatAuthDevice | 8 | 微信设备列表 |
304 | | DeviceAggregate | 9 | 设备聚合列表 |
305 | | BroadcastTaskList | 10 | 推送历史列表 |
306 |
307 |
308 | ### **2.导出任务状态**
309 |
310 | | 名称 | 值 | 说明 |
311 | | --- | --- | --- |
312 | | ToBeExported | 1 | 待导出 |
313 | | Exporting | 2 | 导出中 |
314 | | Exported | 3 | 导出完成 |
315 | | Invalid | 4 | 无效导出 |
316 | | Expired | 5 | 过期 |
--------------------------------------------------------------------------------
/物联平台管理接口文档/常见问题解答.md:
--------------------------------------------------------------------------------
1 | # 常用问题和解答
2 |
3 | * 该文档说明了一些平台相关的流程问题和开发人员会遇到的技术点。
4 |
5 | ## 1. 数据端点与通知告警:
6 |
7 | * https://github.com/xlink-corp/xlink-sdk/blob/master/%E7%89%A9%E8%81%94%E5%B9%B3%E5%8F%B0%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E6%95%B0%E6%8D%AE%E7%AB%AF%E7%82%B9%E4%B8%8E%E9%80%9A%E7%9F%A5%E5%91%8A%E8%AD%A6.md
8 |
--------------------------------------------------------------------------------
/物联平台管理接口文档/微信应用-设备授权管理.md:
--------------------------------------------------------------------------------
1 |
2 | # 微信应用-设备授权管理
3 |
4 | 用于将设备在微信平台进行授权。 在管理台的微信应用中进行设备授权导入,云智易平台自动将设备在微信平台上进行授权,并将设备导入云智易平台。
5 |
6 | ## **接口概览**
7 |
8 | 1. [微信授权配置](#auth_config)
9 | 2. [新增授权设备](#add)
10 | 3. [批量新增授权设备](#batch_add)
11 | 4. [查询授权设备列表](#search)
12 | 5. [再次授权设备](#re_add)
13 | 6. [获取微信授权配置](#get_auth_config)
14 | 7. [产品授权](#auth_product)
15 | 8. [获取产品授权状态](#auth_product_status)
16 | 9. [停止授权中的微信授权任务](#auth_task_stop)
17 |
18 |
19 | ## **接口详情**
20 |
21 | ### **1. 微信授权配置**
22 |
23 | 设置微信设备授权相关的配置,平台根据配置的信息向微信服务器进行设备授权。
24 |
25 | **Requeset**
26 |
27 | URL
28 |
29 | POST /v2/developer/app/{app_id}/wechat_auth/product/{product_id}/config
30 |
31 | Header
32 |
33 | Content-Type : "application/json"
34 | Access-Token : "调用凭证"
35 |
36 | Content
37 |
38 | {
39 | "auth_key": "",
40 | "close_strategy": "1",
41 | "conn_strategy": "1",
42 | "crypt_method": "0",
43 | "auth_ver": "1",
44 | "connect_protocol":"1",
45 | "manu_mac_pos":"-1",
46 | "ser_mac_pos":"-1",
47 | "product_id":"1"
48 | }
49 |
50 | 具体参数说明见微信文档:http://iot.weixin.qq.com/wiki/index.html
51 |
52 | **Response**
53 |
54 | Header
55 |
56 | HTTP/1.1 200 OK
57 |
58 | Content
59 |
60 | {
61 | "auth_key": "",
62 | "close_strategy": "1",
63 | "conn_strategy": "1",
64 | "crypt_method": "0",
65 | "auth_ver": "1",
66 | "connect_protocol":"1",
67 | "manu_mac_pos":"-1",
68 | "ser_mac_pos":"-1",
69 | "product_id":"1"
70 | }
71 |
72 | ### **2. 新增授权设备**
73 |
74 | 在某个产品下添加一个要授权的设备,添加后系统会自动将设备信息向微信平台进行授权。
75 | 注:必须先配置好产品的微信授权配置才可新增授权设备。
76 |
77 | **Request**
78 |
79 | URL
80 |
81 | POST /v2/developer/app/{app_id}/wechat_auth/product/{product_id}/device
82 |
83 | Header
84 |
85 | Content-Type : "application/json"
86 | Access-Token : "调用凭证"
87 |
88 | Content
89 |
90 | {
91 | "mac": "ABCDEFABCDEF"
92 | }
93 |
94 |
95 | **Response**
96 |
97 | Header
98 |
99 | HTTP/1.1 200 OK
100 |
101 | Content
102 |
103 | 无
104 |
105 |
106 | ### **3. 批量新增授权设备**
107 |
108 | 批量新增授权设备,可一次添加多个设备并进行微信授权。
109 |
110 | **Request**
111 |
112 | URL
113 |
114 | POST /v2/developer/app/{app_id}/wechat_auth/product/{product_id}/device_batch
115 |
116 | Header
117 |
118 | Content-Type : "application/json"
119 | Access-Token : "调用凭证"
120 |
121 | Content
122 |
123 | ["mac1","mac2", "mac3"]
124 |
125 |
126 | **Response**
127 |
128 | Header
129 |
130 | HTTP/1.1 200 OK
131 |
132 | Content
133 |
134 | 无
135 |
136 | ### **4. 查询授权设备列表**
137 |
138 | 查询授权设备列表,可查看设备的授权状态。
139 |
140 | **Request**
141 |
142 | URL
143 |
144 | POST /v2/developer/app/{app_id}/wechat_auth/product/{product_id}/devices
145 |
146 | Header
147 |
148 | Content-Type : "application/json"
149 | Access-Token : "调用凭证"
150 |
151 | Content
152 |
153 | {
154 | "offset": "请求的列表偏移量",
155 | "limit": "请求的列表数量",
156 | "query": {
157 | "field1": {
158 | "$in": [
159 | " 字段值",
160 | " 字段值"
161 | ]
162 | },
163 | "field2": "字段值"
164 | },
165 | "order": {
166 | "filed1": "desc",
167 | "filed2": "asc"
168 | }
169 | }
170 |
171 |
172 | 字段 | 是否必须 | 描述
173 | ---- | ---- | ----
174 | offset | 否 | 从某个偏移量开始请求,默认为0
175 | limit | 否 | 请求的条目数量,默认为10
176 | query | 否 | 查询条件,可以根据不同字段加上不同的比较指令来查询,查询条件字段包含设备所有默认字段,不支持扩展属性字段,支持比较指令包含如下:$in:包含于该列表任意一个值$lt:小于该字段值$lte:小于或等于字段值$gt:大于该字段值$gte:大于或等于该字段值$like:模糊匹配该字段值
177 | order | 否 | 可以指定通过设备默认的某个字段排序,desc降序,asc升序
178 |
179 | **Response**
180 |
181 | Header
182 |
183 | HTTP/1.1 200 OK
184 |
185 | Content
186 |
187 | {
188 | "count": "总数",
189 | "list": [
190 | {
191 | "device_id": "设备ID",
192 | "app_id": "应用ID",
193 | "product_id": "产品ID",
194 | "mac": "MAC地址",
195 | "w_device_id": "微信设备ID",
196 | "w_device_type": "微信设备类型",
197 | "status": "设备授权状态",
198 | "ticket":"微信设备的ticket"
199 | }
200 | ]
201 | }
202 |
203 | 字段 | 是否必须 | 描述
204 | ---- | ---- | ----
205 | device_id | 是 | 设备ID
206 | app_id | 是 | 应用ID
207 | product_id | 是 | 产品ID
208 | mac | 是 | MAC地址
209 | w_device_id | 是 | 由微信分配的设备ID
210 | w_device_type | 是 | 由微信分配的设备类型
211 | status | 是 | 设备授权状态,见[附录](#device_auth_status)
212 | ticket | 是 | 微信设备的ticket
213 |
214 | ### **5. 再次授权设备**
215 |
216 | 可以选择某一个或多个设备进行重新授权。
217 |
218 | **Request**
219 |
220 | URL
221 |
222 | POST /v2/developer/app/{app_id}/wechat_auth/product/{product_id}/device_auth
223 |
224 | Header
225 |
226 | Content-Type : "application/json"
227 | Access-Token : "调用凭证"
228 |
229 | Content
230 |
231 | [
232 | "device_id1",
233 | "device_id2",
234 | "device_id3"
235 | ]
236 |
237 | **Response**
238 |
239 | Header
240 |
241 | HTTP/1.1 200 OK
242 |
243 | Content
244 |
245 | 无
246 |
247 |
248 |
249 | ### **6. 获取微信授权配置**
250 |
251 | 获取微信授权配置。
252 |
253 | **Requeset**
254 |
255 | URL
256 |
257 | GET /v2/developer/app/{app_id}/wechat_auth/product/{product_id}/config
258 |
259 | Header
260 |
261 | Content-Type : "application/json"
262 | Access-Token : "调用凭证"
263 |
264 | Content
265 |
266 | 无
267 |
268 | **Response**
269 |
270 | Header
271 |
272 | HTTP/1.1 200 OK
273 |
274 | Content
275 |
276 | {
277 | "app_id": "应用ID",
278 | "product_id": "产品ID",
279 | "auth_config": {
280 | "auth_key": "",
281 | "close_strategy": "1",
282 | "conn_strategy": "1",
283 | "crypt_method": "0",
284 | "auth_ver": "1",
285 | "connect_protocol": "1",
286 | "manu_mac_pos": "-1",
287 | "ser_mac_pos": "-1",
288 | "product_id": "1"
289 | }
290 | }
291 | 具体参数说明见微信文档:http://iot.weixin.qq.com/wiki/index.html
292 |
293 | ### **7. 产品授权**
294 |
295 | 根据微信授权配置,将当前产品下所有设备提交到微信进行授权或更新授权。
296 | 授权操作成功后,需等待当前授权完成以后才可进行下一次授权操作。
297 |
298 | **Request**
299 |
300 | URL
301 |
302 | POST /v2/developer/app/{app_id}/wechat_auth/product/{product_id}
303 |
304 | Header
305 |
306 | Content-Type : "application/json"
307 | Access-Token : "调用凭证"
308 |
309 | Content
310 |
311 | 无
312 |
313 | **Response**
314 |
315 | Header
316 |
317 | HTTP/1.1 200 OK
318 |
319 | Content
320 |
321 | 无
322 |
323 | ### **8. 获取产品授权状态**
324 |
325 | 当请求了产品授权时,产品的授权操作是在系统后台进行批量授权,通过本接口查看授权状态。
326 |
327 | **Request**
328 |
329 | URL
330 |
331 | GET /v2/developer/app/{app_id}/wechat_auth/product/{product_id}/status
332 |
333 | Header
334 |
335 | Content-Type : "application/json"
336 | Access-Token : "调用凭证"
337 |
338 | Content
339 |
340 | 无
341 |
342 | **Response**
343 |
344 | Header
345 |
346 | HTTP/1.1 200 OK
347 |
348 | Content
349 |
350 | {
351 | "status": 0
352 | }
353 |
354 | 字段 | 描述
355 | ---- | ----
356 | status | 产品的授权状态,见[附录](#product_auth_status)
357 |
358 | ### **9. 停止授权中的微信授权任务**
359 |
360 | 停止微信授权任务。
361 |
362 | **Request**
363 |
364 | URL
365 |
366 | POST /v2/developer/app/{app_id}/wechat_auth/product/{product_id}/stop
367 |
368 | Header
369 |
370 | Content-Type : "application/json"
371 | Access-Token : "调用凭证"
372 |
373 | Content
374 |
375 | 无
376 |
377 | **Response**
378 |
379 | Header
380 |
381 | HTTP/1.1 200 OK
382 |
383 | Content
384 |
385 | 无
386 |
387 | ## **附录**
388 |
389 | **设备授权状态**
390 |
391 | 枚举值 | 说明
392 | ---- | ----
393 | 0 | 未授权
394 | 1 | 已授权
395 | 2 | 授权中
396 |
397 | **产品授权状态**
398 |
399 | 枚举值 | 说明
400 | ---- | ----
401 | 0 | 无状态
402 | 1 | 正在授权中
403 |
--------------------------------------------------------------------------------
/物联平台管理接口文档/授权管理.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # 授权管理(Access Key管理)
4 |
5 | 授权管理是由企业成员通过创建Access Key ID和Access Key Secret 用于访问云智易API的密钥,具有企业成员的最高权限。
6 |
7 |
8 | # **接口概览**
9 |
10 |
11 | 1. [开发者换取调用凭证](#auth)
12 | 2. [创建Access Key](#create)
13 | 3. [启用或禁用Access Key](#modify_status)
14 | 4. [删除Access Key](#del)
15 | 5. [获取Access Key列表](#list)
16 |
17 |
18 | # **接口详情**
19 |
20 | ### **1. 开发者换取调用凭证**
21 |
22 | 开发者通过企业成员在管理平台创建的Access Key ID和Access Key Secret 换取云智易平台的调用凭证。
23 |
24 | **Reques**
25 |
26 | URL
27 |
28 | POST /v2/accesskey_auth
29 |
30 | Header
31 |
32 | Content-Type:"application/json"
33 |
34 | Content
35 |
36 | {
37 | "id": "授权ID",
38 | "secret": "授权密钥"
39 | }
40 |
41 |
42 | **Response**
43 |
44 | Header
45 |
46 | HTTP/1.1 200 OK
47 |
48 | Content
49 |
50 | {
51 | "access_token": "调用凭证"
52 | }
53 |
54 |
55 | ### **2. 创建Access Key**
56 |
57 | 企业成员在管理平台创建Access Key。
58 |
59 | **Reqeust**
60 |
61 | URL
62 |
63 | POST /v2/accesskey
64 |
65 | Header
66 |
67 | Content-Type:"application/json"
68 | Access-Token:"调用凭证"
69 |
70 | Content
71 |
72 | {
73 | "name": "别名"
74 | }
75 |
76 | 字段| 是否必须 | 描述
77 | ---- | ---- | ----
78 | name | 否 | 授权别名
79 |
80 | **Response**
81 |
82 | Header
83 |
84 | HTTP/1.1 200 OK
85 |
86 | Content
87 |
88 | {
89 | "id": "授权ID",
90 | "secret": "授权密钥",
91 | "name": "别名",
92 | "create_time": "创建时间",
93 | "status": "状态"
94 | }
95 |
96 | 字段| 是否必须 | 描述
97 | ---- | ---- | ----
98 | id | 是 | 授权ID
99 | secret | 是 | 授权密钥
100 | name | 否 | 别名
101 | create_time | 是 | 创建时间,例:2014-10-09T08:15:40.843Z
102 | status | 是 | 授权的状态,枚举值,见[附录](#appendix)
103 |
104 |
105 | ### **3. 启用或禁用Access Key**
106 |
107 | 通过本接口可改变Access Key的状态,启用或禁用。
108 |
109 | **Request**
110 |
111 | URL
112 |
113 | PUT /v2/accesskey/{accesskey_id}/status/{status}
114 |
115 | 字段| 是否必须 | 描述
116 | ---- | ---- | ----
117 | {accesskey_id} | 是 | 授权ID
118 | {status} | 是 | 授权的状态,枚举值,见[附录](#appendix)
119 |
120 | Header
121 |
122 | Content-Type:"application/json"
123 | Access-Token:"调用凭证"
124 |
125 | Content
126 |
127 | 无
128 |
129 | **Response**
130 |
131 | Header
132 |
133 | HTTP/1.1 200 OK
134 |
135 | Content
136 |
137 | {
138 | "id": "授权ID",
139 | "secret": "授权密钥",
140 | "name": "别名",
141 | "create_time": "创建时间",
142 | "status": "状态"
143 | }
144 |
145 |
146 | ### **4. 删除Access Key**
147 |
148 | 彻底删除一个Access Key,删除后将不可恢复。
149 |
150 | **Request**
151 |
152 | URL
153 |
154 | DELETE /v2/accesskey/{accesskey_id}
155 |
156 | 字段| 是否必须 | 描述
157 | ---- | ---- | ----
158 | {accesskey_id} | 是 | 授权ID
159 |
160 | Header
161 |
162 | Content-Type:"application/json"
163 | Access-Token:"调用凭证"
164 |
165 | Content
166 |
167 | 无
168 |
169 | **Response**
170 |
171 | Header
172 |
173 | HTTP/1.1 200 OK
174 |
175 | Content
176 |
177 | 无
178 |
179 | ### **5. 获取Access Key列表**
180 |
181 | 获取所有的Access Key列表。
182 |
183 | **Request**
184 |
185 | URL
186 |
187 | GET /v2/accesskeys
188 |
189 | Header
190 |
191 | Content-Type:"application/json"
192 | Access-Token:"调用凭证"
193 |
194 | Content
195 |
196 | 无
197 |
198 | **Response**
199 |
200 | Header
201 |
202 | HTTP/1.1 200 OK
203 |
204 | Content
205 |
206 | {
207 | "list": [
208 | {
209 | "id": "授权ID",
210 | "secret": "授权密钥",
211 | "name": "别名",
212 | "create_time": "创建时间",
213 | "status": "状态"
214 | }
215 | ]
216 | }
217 |
218 | ## **附录**
219 |
220 | **1. 授权状态**
221 |
222 | 枚举值 | 说明
223 | ---- | ----
224 | 0 | 禁用
225 | 1 | 启用
226 |
227 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
228 |
--------------------------------------------------------------------------------
/物联平台管理接口文档/数据存储管理接口.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # 数据存储管理接口
4 |
5 | * 数据存储服务Xlink平台下提供的通用数据存储接口,企业开发者和APP开发者通过API接口进行自定义的数据存储、获取读取操作。
6 |
7 |
8 | #### 使用流程:
9 |
10 | * 在管理台中创建数据表,可指定字段,和指定数据表访问权限。
11 | * 通过API接口对数据表进行操作
12 |
13 |
14 | ### 数据表分为两种类型
15 | * ** 用户公开表 **:所有用户都可访问的公开数据表。
16 | * ** 用户私有表 **:用户只可各自访问个人创建的数据的数据表。
17 |
18 | 两种类型的表均可通过配置权限限制用户的访问权限。
19 |
20 | ### 数据表可选的访问权限配置项
21 | 1. create:创建数据
22 | 2. get:读取数据
23 | 3. find: 查询数据
24 | 4. update:更新数据
25 | 5. delete:删除数据
26 |
27 | ### 数据表特点:
28 | 1. 不同企业之间数据相互隔离
29 | 2. 企业开发者对所有数据表拥有所有访问权限
30 |
31 | ### 数据表预留字段
32 |
33 | 定义 | 说明
34 | ---- | ----
35 | objectId | 标识ID
36 | createAt | 创建时间
37 | updateAt | 更新时间
38 | creator | 创建者
39 |
40 |
41 | # **接口预览**
42 |
43 | 1. [创建数据表](#create)
44 | 2. [修改数据表](#modify)
45 | 3. [获取数据表](#get)
46 | 4. [删除数据表](#delete)
47 | 5. [获取数据表列表](#list)
48 | 6. [附录](#addenda)
49 |
50 | # **接口详情**
51 |
52 |
53 | ### **1.创建数据表**
54 |
55 | 企业管理员创建数据表,需要指定数据表名称、类型、以及权限和字段。
56 |
57 | **Request**
58 |
59 | URL
60 |
61 | POST /v2/table
62 |
63 | Header
64 |
65 | Content-Type:"application/json"
66 | Access-Token:"调用凭证"
67 |
68 | Content
69 |
70 | {
71 | "name": "表名称",
72 | "type": "数据表类型",
73 | "permission": [
74 | "create",
75 | "get",
76 | "find",
77 | "update",
78 | "delete"
79 | ],
80 | "field": {
81 | "{field1}": "数据类型",
82 | "{field2}": "数据类型"
83 | }
84 | }
85 |
86 | 字段 | 是否必须 | 描述
87 | ---- | ---- | ----
88 | name | 是 | 数据表名称,2~64个字符以内,以字母或下划线开头,可包含数字,不
得包含中文与其他特殊字符
89 | type |是 | 数据表类型,见[附录](#addenda)
90 | permission | 否 | 对数据表的访问权限
91 | filed | 否 |对象表的字段,并表明字段的数据类型,数据类型支持的类型见[附录](#addenda)。
以字母或下划线开头,可包含数字,不得包含中文与其他特殊字符
92 |
93 | **Response**
94 |
95 | Header
96 |
97 | HTTP/1.1 200 OK
98 |
99 | Content
100 |
101 | 无
102 |
103 |
104 | ### **2.修改数据表**
105 |
106 | 企业管理员修改数据表,仅可以修改权限和字段类型。
107 |
108 | **Request**
109 |
110 | URL
111 |
112 | PUT /v2/table/{table_name}
113 |
114 | 字段 | 是否必须 | 描述
115 | ---- | ---- | ----
116 | table_name | 是 | 表名
117 |
118 | Header
119 |
120 | Content-Type:"application/json"
121 | Access-Token:"调用凭证"
122 |
123 | Content
124 |
125 | {
126 | "permission": [
127 | "create",
128 | "get",
129 | "find",
130 | "update",
131 | "delete"
132 | ],
133 | "field": {
134 | "{field1}": "数据类型",
135 | "{field2}": "数据类型"
136 | }
137 | }
138 |
139 | 字段 | 是否必须 | 描述
140 | ---- | ---- | ----
141 | permission | 是 | 权限名称,集合类型,可以包括create,get,find,update,delete
142 | field | 是 | 字段与字段类型,集合类型,必须是表中的字段
143 |
144 |
145 | **Response**
146 |
147 | Header
148 |
149 | HTTP/1.1 200 OK
150 |
151 | Content
152 |
153 | {
154 | "name": "表名称",
155 | "type": "数据表类型",
156 | "permission": [
157 | "create",
158 | "get",
159 | "find",
160 | "update",
161 | "delete"
162 | ],
163 | "field": {
164 | "{field1}": "数据类型",
165 | "{field2}": "数据类型"
166 | }
167 | }
168 |
169 | 字段 | 是否必须 | 描述
170 | ---- | ---- | ----
171 | name | 是 | 数据表名称,2~64个字符以内,以字母或下划线开头,可包含数字,不
得包含中文与其他特殊字符
172 | type |是 | 数据表类型,见[附录](#addenda)
173 | permission | 否 | 对数据表的访问权限
174 | filed | 否 |对象表的字段,并表明字段的数据类型,数据类型支持的类型见[附录](#addenda)。
以字母或下划线开头,可包含数字,不得包含中文与其他特殊字符
175 |
176 |
177 | ### **3.获取数据表**
178 |
179 | 企业管理员获取数据表,根据表名获取数据表信息。
180 |
181 | **Request**
182 |
183 | URL
184 |
185 | GET /v2/table/{table_name}
186 |
187 | 字段 | 是否必须 | 描述
188 | ---- | ---- | ----
189 | table_name | 是 | 表名
190 |
191 | Header
192 |
193 | Content-Type:"application/json"
194 | Access-Token:"调用凭证"
195 |
196 | Content
197 |
198 | 无
199 |
200 | **Response**
201 |
202 | Header
203 |
204 | HTTP/1.1 200 OK
205 |
206 | Content
207 |
208 | {
209 | "name": "表名称",
210 | "type": "数据表类型",
211 | "permission": [
212 | "create",
213 | "get",
214 | "find",
215 | "update",
216 | "delete"
217 | ],
218 | "field": {
219 | "{field1}": "数据类型",
220 | "{field2}": "数据类型"
221 | }
222 | }
223 |
224 | 字段 | 是否必须 | 描述
225 | ---- | ---- | ----
226 | name | 是 | 数据表名称,2~64个字符以内,以字母或下划线开头,可包含数字,不
得包含中文与其他特殊字符
227 | type |是 | 数据表类型,见[附录](#addenda)
228 | permission | 否 | 对数据表的访问权限
229 | filed | 否 |对象表的字段,并表明字段的数据类型,数据类型支持的类型见[附录](#addenda)。
以字母或下划线开头,可包含数字,不得包含中文与其他特殊字符
230 |
231 |
232 | ### **4.删除数据表**
233 |
234 | 企业管理员删除数据表,根据数据表名table_name删除数据表。
235 |
236 | **Request**
237 |
238 | URL
239 |
240 | DELETE /v2/table/{table_name}
241 |
242 | 字段 | 是否必须 | 描述
243 | ---- | ---- | ----
244 | table_name | 是 | 表名
245 |
246 | Header
247 |
248 | Content-Type:"application/json"
249 | Access-Token:"调用凭证"
250 |
251 | Content
252 |
253 | 无
254 |
255 | **Response**
256 |
257 | Header
258 |
259 | HTTP/1.1 200 OK
260 |
261 | Content
262 |
263 | 无
264 |
265 |
266 | ### **5.获取数据表列表**
267 |
268 | 企业管理员获取自己企业所拥有的数据表列表。
269 |
270 | **Request**
271 |
272 | URL
273 |
274 | GET /v2/tables
275 |
276 | Header
277 |
278 | Content-Type:"application/json"
279 | Access-Token:"调用凭证"
280 |
281 | Content
282 |
283 | 无
284 |
285 | **Response**
286 |
287 | Header
288 |
289 | HTTP/1.1 200 OK
290 |
291 | Content
292 |
293 | [
294 | {
295 | "name": "表名称",
296 | "type": "数据表类型",
297 | "permission": [
298 | "create",
299 | "get",
300 | "find",
301 | "update",
302 | "delete"
303 | ],
304 | "field": {
305 | "{field1}": "数据类型",
306 | "{field2}": "数据类型"
307 | }
308 | },
309 | {
310 | "name": "表名称",
311 | "type": "数据表类型",
312 | "permission": [
313 | "create",
314 | "get",
315 | "find",
316 | "update",
317 | "delete"
318 | ],
319 | "field": {
320 | "{field1}": "数据类型",
321 | "{field2}": "数据类型"
322 | }
323 | }
324 | ]
325 |
326 |
327 | 字段 | 是否必须 | 描述
328 | ---- | ---- | ----
329 | name | 是 | 数据表名称,2~64个字符以内,以字母或下划线开头,可包含数字,不
得包含中文与其他特殊字符
330 | type |是 | 数据表类型,见[附录](#addenda)
331 | permission | 否 | 对数据表的访问权限
332 | filed | 否 |对象表的字段,并表明字段的数据类型,数据类型支持的类型见[附录](#addenda)。
以字母或下划线开头,可包含数字,不得包含中文与其他特殊字符
333 |
334 |
335 | # **附录**
336 |
337 | 1.数据表类型
338 |
339 | 枚举值 | 说明
340 | ---- | ----
341 | 1 | 用户公开表
342 | 2 | 用户私有表
343 | 3 | 应用数据表
344 |
345 | 2.数据字段支持的数据类型
346 |
347 | 枚举值 | 说明
348 | ---- | ----
349 | string | 字符串
350 | int | 32位整形数字
351 | boolean | 布尔类型
352 | float | 浮点类型
353 | date | 日期类型,例:2014-08-20T02:06:57.931Z
354 |
355 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
356 |
--------------------------------------------------------------------------------
/物联平台管理接口文档/数据端点与通知告警.md:
--------------------------------------------------------------------------------
1 | # 数据端点与通知告警
2 |
3 | * 该文档用来描述数据端点与平台通知告警的关系。
4 |
5 | ## 通知和告警
6 |
7 | 1. 告警一般用在设备的状态发生了异常或者产生了一些需要通知出来的信息,平台需要知道并且按照既定规则将该异常通知到管理者或普通用户那里。
8 |
9 | ### 数据端点
10 |
11 | 1. **什么是数据端点?**
12 | 1. 数据端点是对设备运行状态的一种描述,它支持多种数据格式,如布尔、单字节、短整型、长整形以及字符串等。
13 | 2. 当设备的数据端点发生变化,若设备已经连接到云端,那数据端点的变化将会通过云智易提供的硬件SDK,同步到云端上,以便厂商在云平台查看与收集设备的运行状态的变化。
14 | 2. **数据端点和通知告警有什么关系?**
15 | 1. 云智易平台通过监视设备数据端点的变化,配合厂商在管理台设置的告警规则,将设备运行状态转换成为告警信息,通知到厂商预先设置好的目标中,包括邮件、短信、APP上等等。
16 |
17 | ### 设置产品数据端点与告警
18 |
19 | 1. 厂商需要在云智易企业管理平台注册一个企业账号,登录到管理台,添加一个产品。
20 | 2. 在产品的数据端点设置中,按照产品需求,添加一个或多个数据端点,用于描述和收集产品下设备的运行状态。
21 | 1. 数据端点由“索引”,“类型”,“值”三个要素组成。一个设备可以最多添加200个数据端点,数据端点的索引值不需要按顺序排放,但是数据端点的索引值不能重复。
22 | 2. 数据端点支持布尔、单字节、短整型、长整形、字符串这些类型。以满足设备上报状态的需求。
23 | 3. 设备硬件开发工程师,在设备端开发时,一定要遵守管理台上已经设置好的数据端点的“索引”、“类型”完成数据端点的上报,这样平台才可以正确解析设备的运行状态,完成后续工作。
24 | 3. 当厂商完成数据端点的设置后,便可以在产品的“通知与告警”服务中,添加告警规则。
25 | 1. 告警规则由“告警条件”、“告警内容”、“通知方式”、“可见范围”几个关键属性组成。
26 | 1. 告警条件:指的是当设备的数据端点变化满足到既定条件时,便触发告警或通知。
27 | 2. 告警内容:指的是当告警被触发后,需要通知的具体内容。
28 | 3. 通知方式:支持通知到短信、邮箱、应用内推送和APN推送。
29 | 1. 短信:当告警触发后,通知到企业成员的手机,注意,暂时不支持通知到用户手机。
30 | 2. 邮箱:当告警触发后,通知到企业成员的邮箱,注意,暂时不支持通知到设备用户的邮箱。
31 | 3. 应用程序内推送:当用户的APP订阅了这个设备,当设备触发了告警,告警内容就会通过到所有在线的APP内。不在线的APP通知不到,这时就需要使用到APN推送了。
32 | 4. APN推送:针对不在线的APP如何能够即时收到设备告警,云智易引入了APN(Apple Push Notify Service)。当选中了APN通知,设备告警会推送到对应的iOS APP上,即便APP没有上线, 也能收到告警内容。APN的配置,在后面会进行说明。针对Android APP,由于Android APP具有可以长期驻守后台的便利,Android APP可以直接通过应用程序内推送消息完成告警的功能而不用引入类似APN推送的功能。
33 | 4. 厂商还可以通过管理台的告警服务,查看所有设别的历史告警消息以及告警信息统计信息。
34 |
35 | ### 通知、告警和APN
36 |
37 | 1. **什么是APN ?**
38 | 1. APN:Apple Push Notification Service
39 | 2. **为什么要使用APN ?**
40 | 1. 针对iOS程序进入后台就变为离线的特点,为了在APP离线的情况下也可以收到设别告警,平台引入了APN接入的服务。
41 | 3. **配置方法**
42 | 1. 厂商进入平台的应用管理服务功能,新建一个iOS应用。
43 | 2. 再对这个应用进行编辑,勾选“启用苹果APN服务”,并且上传APN的P12文件,注意要区分是开发证书还是产品证书。输入秘钥,完成一个APN服务的创建。
44 | 4. **APP开发:**
45 | 1. APN是需要在APP开发时做绑定的,APP开发人员需要在APP登录到云智易服务器,完成身份认证,并且获取到Access-Token以后,调用注册APN的接口完成APP在这个APN上的注册和绑定动作。
46 |
47 | ### 消息模版设置
48 |
49 | 1. 云智易的消息通知在通常情况下,会直接将厂商设置好的告警消息或通知直接发送出去。如厂商在一个告警规则中的告警内容设置为“设备上线了”,那么在设备上线的时候,通知服务将会直接把“设备上线了”这个消息通知到所有设定好的目标中。
50 | 2. 为了满足更复杂的消息内容通知需求,云智易提供了消息模板的功能。厂商可以按照一定的消息模板设置,将更复杂,有变量的消息通知到目标上。
51 | 3. 消息模板规则:
52 | 1. 厂商在设置消息内容的时候,需要带上“{value}”参数,其中 “ {value} " 为需要接口替换的变量;
53 | 2. 具体场景:
54 | 1. 当厂商设置了一个温度端点告警阀值为50度,并且其告警内容设置为“注意!您的设备温度达到了{value}度。”,那么当这个设备的温度端点值达到56度时,推送给用户的告警内容就会是“注意!您的设备温度达到了56度。”
55 | 2. 当厂商设置了一个字符窜的数据端点,设置告警规则为字符串不为空或者大于小于另外一个字符串,并且其告警内容设置为“注意!您的{value}发生了异常。”,那么当这个设备上报的数据端点数据为“一号门磁”,推送给用户的告警内容就会是“注意!您的一号门磁发生了异常。”
56 | 3. 并且针对字符串类型数据端点的告警,平台还支持复杂的模版规则,如下:
57 | 1. 一个字符窜的数据端点,设置告警规则为字符串不为空或者大于小于另外一个字符串,其告警内容设置为“注意!您的{device}被{option}。”。设备上报的字符数据若为如下格式的JSON数据: ***{"xn":{“device": "大门门磁”,"option": "打开"}}***,那么告警内容就会是: ***注意!您的大门门磁被打开。***,其中json数据中,“xn” Object为保留关键字,表示里面内容为需要匹配消息模版的。”device”,”option"两个Object Name表示需要将内容替换消息模版中的{device}和{option}。
58 |
--------------------------------------------------------------------------------
/物联平台管理接口文档/数据转发服务器验证规则.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # **数据转发服务器验证**
4 |
5 | 本文档主要说明配置产品数据转发规则时对于数据接收方服务器的验证规则,主要校验服务器url和token是否正确。在填写数据转发规则之前,请确保数据接收url对应的服务器已正常运行,以便于验证数据接收服务器地址的有效性。
6 |
7 |
8 | ## 转发规则涉及参数
9 |
10 | 参数 | 是否必须 | 描述
11 | ---- | ---- | ----
12 | url |是 | 数据转发接收服务器url
13 | token | 是 | 数据转发接收服务器token,数据接收方需要用这个解析xlink的合法性验证
14 |
15 |
16 | ## 有效性验证
17 |
18 | 后台添加或者修改数据转发规则提交信息后, xlink服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数.
19 | 例如:配置的url是http://www.xlink.com
20 | 则发送验证请求的验证路径为:http://www.xlink.com?timestamp=timestamp&nonce=nonce&echostr=echostr&signature=signature
21 |
22 | 参数 | 是否必须 | 描述
23 | ---- | ---- | ----
24 | signature |是 | xlink加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
25 | timestamp | 是 | 时间戳
26 | nonce | 是 | 随机数
27 | echostr | 是 | 随机字符串
28 |
29 | 通过检验signature对请求进行校验, 若确认此次GET请求来自xlink服务器, 请原样返回echostr参数内容, 则接入生效, 成为数据接收方, 否则接入失败。
30 |
31 | 加密/校验流程如下:
32 | 1. 将token、timestamp、nonce三个参数进行字典序排序
33 | 2. 将三个参数字符串拼接成一个字符串进行sha1加密
34 | 3. 获得加密后的字符串可与signature对比,标识该请求来源于xlink
35 |
36 |
37 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
38 |
--------------------------------------------------------------------------------
/物联平台管理接口文档/文件管理接口.md:
--------------------------------------------------------------------------------
1 |
2 | # 文件管理接口
3 |
4 | 文件管理接口是只企业用户在管理台中不同模块上传文件的接口。
5 |
6 | # **接口概览**
7 | 1. 产品固件上传
8 | 2. APN密钥文件上传
9 |
10 | # **接口详情**
11 |
12 | ### **1. 产品固件上传**
13 |
14 | 产品固件上传是用于企业用户在固件管理新增固件的时候,需要将固件文件上传到服务器,然后根据上传返回的路径新增固件。
15 |
16 | 关于产品固件管理请了解 [产品与设备管理接口](https://github.com/xlink-corp/xlink-sdk/blob/master/%E7%89%A9%E8%81%94%E5%B9%B3%E5%8F%B0%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E4%BA%A7%E5%93%81%E4%B8%8E%E8%AE%BE%E5%A4%87%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3.md)
17 |
18 |
19 | **Request**
20 |
21 | URL
22 |
23 | POST /v2/upload/product/{product_id}/firmware
24 |
25 | Header
26 |
27 | Access-Token:"调用凭证"
28 |
29 | Content
30 |
31 | 产品固件文件二进制数据
32 |
33 | **Response**
34 |
35 | Header
36 |
37 | HTTP/1.1 200 OK
38 |
39 | Content
40 |
41 | {
42 | "url":"文件资源地址",
43 | "md5":"文件MD5值",
44 | "size":"文件大小"
45 | }
46 |
47 |
48 | ### **2. APN密钥文件上传**
49 |
50 | APN密钥文件是IOS APP用于离线推送的密钥文件,本接口用于在管理台中的应用管理创建应用时,需先上传APN密钥文件,然后根据上传返回的路径创建应用。
51 |
52 |
53 | 关于应用管理接口请了解 [应用管理接口](https://github.com/xlink-corp/xlink-sdk/blob/master/%E7%89%A9%E8%81%94%E5%B9%B3%E5%8F%B0%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E5%BA%94%E7%94%A8%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3.md)
54 |
55 |
56 | **Request**
57 |
58 | URL
59 |
60 | POST /v2/upload/app/apn_license
61 |
62 | Header
63 |
64 | Access-Token:"调用凭证"
65 |
66 | Content
67 |
68 | APN密钥文件的二进制数据
69 |
70 | **Response**
71 |
72 | Header
73 |
74 | HTTP/1.1 200 OK
75 |
76 | Content
77 |
78 | {
79 | "url":"apn密钥文件下载地址"
80 | }
--------------------------------------------------------------------------------
/物联平台管理接口文档/标签管理接口.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # 标签管理接口
4 |
5 | 个人开发者通过本文档开发标签相关接口。
6 |
7 |
8 | #**接口预览**
9 | 1. [获取企业用户标签列表](#corpUserTagList)
10 | 2. [设置企业用户预设标签](#setCorpUserTag)
11 | 3. [获取企业设备标签列表](#corpDeviceTagList)
12 | 4. [设置企业设备预设标签](#setCorpDeviceTag)
13 | 5. [获取告警标签列表](#alertTagList)
14 | 6. [设置告警标签列表](#setAlertTag)
15 |
16 |
17 | ### **1. 获取企业用户标签列表**
18 |
19 | 获取企业下用户标签列表
20 |
21 | **Requeset**
22 |
23 | URL
24 |
25 | GET /v2/user_tag
26 |
27 | Header
28 |
29 | Content-Type : "application/json"
30 | Access-Token : "调用凭证"
31 |
32 | Content
33 |
34 | 无
35 |
36 | **Response**
37 |
38 | Header
39 |
40 | HTTP/1.1 200 OK
41 |
42 | Content
43 |
44 | {
45 | "tags" : ["tag1", "tag2", "tag3"]
46 | }
47 |
48 |
49 | ### **2. 设置企业用户预设标签**
50 |
51 | 设置企业用户标签
52 |
53 | **Requeset**
54 |
55 | URL
56 |
57 | PUT /v2/user_tag
58 |
59 | Header
60 |
61 | Content-Type : "application/json"
62 | Access-Token : "调用凭证"
63 |
64 | Content
65 |
66 | {
67 | "tags" : ["tag1", tag2", "tag3"]
68 | }
69 |
70 | **Response**
71 |
72 | Header
73 |
74 | HTTP/1.1 200 OK
75 |
76 | Content
77 |
78 | 无
79 |
80 | ### **3. 获取企业设备标签列表**
81 |
82 | 获取企业下设备标签列表
83 |
84 | **Requeset**
85 |
86 | URL
87 |
88 | GET /v2/device_tag
89 |
90 | Header
91 |
92 | Content-Type : "application/json"
93 | Access-Token : "调用凭证"
94 |
95 | Content
96 |
97 | 无
98 |
99 | **Response**
100 |
101 | Header
102 |
103 | HTTP/1.1 200 OK
104 |
105 | Content
106 |
107 | {
108 | "tags" : ["tag1", "tag2", "tag3"]
109 | }
110 |
111 |
112 | ### **4. 设置企业设备预设标签**
113 |
114 | 设置企业设备标签
115 |
116 | **Requeset**
117 |
118 | URL
119 |
120 | PUT /v2/device_tag
121 |
122 | Header
123 |
124 | Content-Type : "application/json"
125 | Access-Token : "调用凭证"
126 |
127 | Content
128 |
129 | {
130 | "tags" : ["tag1", tag2", "tag3"]
131 | }
132 |
133 | **Response**
134 |
135 | Header
136 |
137 | HTTP/1.1 200 OK
138 |
139 | Content
140 |
141 | 无
142 |
143 |
144 |
145 | ### **5. 获取告警标签列表**
146 |
147 | 获取告警标签列表
148 |
149 | **Requeset**
150 |
151 | URL
152 |
153 | GET /v2/alert_tag
154 |
155 | Header
156 |
157 | Content-Type : "application/json"
158 | Access-Token : "调用凭证"
159 |
160 | Content
161 |
162 | 无
163 |
164 | **Response**
165 |
166 | Header
167 |
168 | HTTP/1.1 200 OK
169 |
170 | Content
171 |
172 | {
173 | "tags" : ["tag1", "tag2", "tag3"]
174 | }
175 |
176 |
177 |
178 | ### **6. 设置告警标签列表**
179 |
180 | 设置告警标签
181 |
182 | **Requeset**
183 |
184 | URL
185 |
186 | PUT /v2/alert_tag
187 |
188 | Header
189 |
190 | Content-Type : "application/json"
191 | Access-Token : "调用凭证"
192 |
193 | Content
194 |
195 | {
196 | "tags" : ["tag1", tag2", "tag3"]
197 | }
198 |
199 | **Response**
200 |
201 | Header
202 |
203 | HTTP/1.1 200 OK
204 |
205 | Content
206 |
207 | 无
208 |
209 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
210 |
--------------------------------------------------------------------------------
/物联平台管理接口文档/虚拟设备接口.md:
--------------------------------------------------------------------------------
1 | # 虚拟设备功能接口
2 |
3 | ## 概览
4 |
5 | * 虚拟设备:Virtual-Device, 简称VDevice;
6 | * 虚拟设备是平台上对每台实际设备运行状态的镜像描述。
7 | * 虚拟设备保存了实际设备运行状态数值的镜像
8 |
9 | ## 接口设计
10 |
11 | * **接口概览**
12 | 1. [获取虚拟设备数据](#corp_get_vdevice_info)
13 | 2. [批量获取虚拟设备数据](#corp_get_vdevice_list)
14 |
15 | ### 1. 获取虚拟设备数据
16 |
17 | #### **Request**
18 |
19 | *URL*
20 |
21 | ```
22 | GET /v2/product/{product_id}/v_device/{device_id}
23 | ```
24 |
25 | *Header*
26 |
27 | ```
28 | Content-Type:application/json
29 | Access-Token:"企业调用凭证"
30 | ```
31 |
32 | *Content*
33 |
34 | ```
35 | 无
36 | ```
37 |
38 | #### **Response**
39 |
40 | *Header*
41 |
42 | ```
43 | HTTP/1.1 200 OK
44 | ```
45 |
46 | *Content*
47 |
48 | ```
49 | {
50 | "0": "数据端点值",
51 | "1": "数据端点值",
52 | "device_id": "设备ID",
53 | "cm_id": "登录CM服务器ID",
54 | "ip": "登录IP",
55 | "online": "是否在线",
56 | "last_login": "上次登录时间,例:2015-10-09T08:15:40.843Z",
57 | "last_logout": "上次离线时间,例:2015-10-09T08:15:40.843Z",
58 | "last_update": "上次数据端点变化时间,例:2015-10-09T08:15:40.843Z",
59 | "online_count": "累计在线时长",
60 | "conn_prot":"连接协议"
61 | }
62 | ```
63 |
64 | | 名称 | 是否必须 | 值 |
65 | | --- | --- | --- |
66 | | device_id | 是 | 设备ID |
67 | | cm_id | 是 | 登录CM服务器ID |
68 | | ip | 是 | 登录IP |
69 | | online | 是 | 是否在线 |
70 | | last_login | 是 | 上次登录时间,例:2015-10-09T08:15:40.843Z|
71 | | last_logout | 是 | 上次离线时间,例:2015-10-09T08:15:40.843Z |
72 | | last_update | 是 | 上次数据端点变化时间,例:2015-10-09T08:15:40.843Z |
73 | | online_count | 是 | 设备累计在线时长,单位:秒
74 | | 数据端点索引 | 否 | 数据端点值 |
75 | | conn_prot | 是 | 连接协议,见[设备连接协议](#connect_protocol)
76 |
77 |
78 | ### 2.批量获取虚拟设备数据
79 |
80 | #### **Request**
81 |
82 | *URL*
83 |
84 | ```
85 | POST /v2/product/{product_id}/v_devices
86 | ```
87 |
88 | *Header*
89 |
90 | ```
91 | Content-Type:application/json
92 | Access-Token:"企业调用凭证"
93 | ```
94 |
95 | *Content*
96 |
97 | ```
98 | [device_id,device_id,device]
99 | ```
100 |
101 | #### **Response**
102 |
103 | *Header*
104 |
105 | ```
106 | HTTP/1.1 200 OK
107 | ```
108 |
109 | *Content*
110 |
111 | ```
112 | {
113 | "list": [
114 | {
115 | "0": "数据端点值",
116 | "1": "数据端点值",
117 | "device_id": "设备ID",
118 | "cm_id": "登录CM服务器ID",
119 | "ip": "登录IP",
120 | "online": "是否在线",
121 | "last_login": "上次登录时间,例:2015-10-09T08:15:40.843Z",
122 | "last_logout": "上次离线时间,例:2015-10-09T08:15:40.843Z",
123 | "last_update": "上次数据端点变化时间,例:2015-10-09T08:15:40.843Z",
124 | "online_count": "累计在线时长",
125 | "conn_prot":"连接协议"
126 | }
127 | ]
128 | }
129 | ```
130 |
131 | | 名称 | 是否必须 | 值 |
132 | | --- | --- | --- |
133 | | device_id | 是 | 设备ID |
134 | | cm_id | 是 | 登录CM服务器ID |
135 | | ip | 是 | 登录IP |
136 | | online | 是 | 是否在线 |
137 | | last_login | 是 | 上次登录时间,例:2015-10-09T08:15:40.843Z|
138 | | last_logout | 是 | 上次离线时间,例:2015-10-09T08:15:40.843Z |
139 | | last_update | 是 | 上次数据端点变化时间,例:2015-10-09T08:15:40.843Z |
140 | | online_count | 是 | 设备累计在线时长,单位:秒
141 | | 数据端点索引 | 否 | 数据端点值 |
142 | | conn_prot | 是 | 连接协议,见[设备连接协议](#connect_protocol)
143 |
144 |
145 | ### 设备连接协议
146 |
147 | | 值 | 描述 |
148 | | --- | ---|
149 | | 1 | XLINK自有协议 |
150 | | 2 | MQTT协议 3.1.1 |
--------------------------------------------------------------------------------
/物联平台管理接口文档/设备控制接口.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 |
4 | # 设备控制接口
5 |
6 | ## 概述
7 |
8 | * 通过本系列接口可以进行设备的控制和诊断动作
9 | * 设备控制与诊断是通过获取与控制设备的数据端点信息,获取设备的数据,以及对设备进行简单控制。
10 |
11 | ## 本系列接口包括以下内容
12 |
13 | 1. 获取设备属性
14 | 2. 设置设备属性
15 | 3. 向设备发送透传指令
16 | 4. 获取前端访问设备Token
17 |
18 | 附录
19 |
20 | ## 接口详情
21 |
22 | ### 1. 获取设备属性
23 |
24 | * 调用本接口获取某个指定设备的运行状态以及数据端点信息.
25 |
26 | #### Request
27 |
28 | *URL*
29 |
30 | GET /v2/diagnosis/device/probe/{deviceid}
31 |
32 | *Header*
33 |
34 | Content-Type:"application/json"
35 | Access-Token:"调用凭证"
36 |
37 | *Content*
38 |
39 | 无
40 |
41 | #### Response
42 |
43 | *Header*
44 |
45 | HTTP/1.1 200 OK
46 |
47 | *Content*
48 |
49 | {
50 | "name":"device_name",
51 | "datapoint":
52 | [
53 | {
54 | "index":0,
55 | "value":true
56 | },
57 | {
58 | "index":1,
59 | "value":12
60 | }
61 | ]
62 | }
63 |
64 | | 字段 | 是否必须 | 描述 |
65 | | --- | --- | --- |
66 | | name | 否 | 设备名称 |
67 | | datapoint | 否 | 数据端点列表 |
68 | | index | 否 | 数据端点索引 |
69 | | value | 否 | 数据端点值 |
70 |
71 | ### 2. 设置设备属性
72 |
73 | * 调用本接口设置某个在线设备的数据端点值
74 |
75 | #### Request
76 |
77 | *URL*
78 |
79 | POST /v2/diagnosis/device/set/{deviceid}
80 |
81 | *Header*
82 |
83 | Content-Type:"application/json"
84 | Access-Token:"调用凭证"
85 |
86 | *Content*
87 |
88 | ```
89 | {
90 | "datapoint":[
91 | {
92 | "index":0,
93 | "value":true
94 | },
95 | {
96 | "index":1,
97 | "value":12
98 | }
99 | ]
100 | }
101 | ```
102 |
103 | | 字段 | 是否必须 | 描述 |
104 | | --- | --- | --- |
105 | | datapoint | 是 | 需要设置的数据端点列表 |
106 | | index | 是 | 数据端点索引 |
107 | | value | 是 | 数据端点值 |
108 |
109 | #### Response
110 |
111 | *Header*
112 |
113 | HTTP/1.1 200 OK
114 |
115 | *Content*
116 |
117 | 无
118 |
119 | ### 3. 向设备发送透传指令
120 |
121 | * 调用本接口向在线设备发送透传指令。
122 |
123 | #### Request
124 |
125 | *URL*
126 |
127 | POST /v2/diagnosis/device/pipe/{deviceid}
128 |
129 | *Header*
130 |
131 | Content-Type:"application/json"
132 | Access-Token:"调用凭证"
133 |
134 | *Content*
135 |
136 | ```
137 | {
138 | "data" : {
139 | "type" : "base64",
140 | "value" : "xxxxx"
141 | }
142 | }
143 | ```
144 |
145 | | 字段 | 是否必须 | 描述 |
146 | | --- | --- | --- |
147 | | data | 是 | 需要发送的数据字段 |
148 | | type | 是 | 上报的二进制数据的编码格式。暂只支持base64 |
149 | | value | 是 | 编码过的二进制数据 |
150 |
151 | #### Response
152 |
153 | *Header*
154 |
155 | HTTP/1.1 200 OK
156 |
157 | *Content*
158 |
159 | 无
160 |
161 | ### 4. 获取设备访问Token
162 |
163 | * 调用本接口获取前端页面通过socket.io直接连接设备的凭证,以及连接地址等信息。
164 |
165 | #### Request
166 |
167 | *URL*
168 |
169 | POST /v2/diagnosis/device/token/{deviceid}
170 |
171 | *Header*
172 |
173 | Content-Type:"application/json"
174 | Access-Token:"调用凭证"
175 |
176 | *Content*
177 |
178 | ```
179 | {
180 | "act":"logs"
181 | }
182 | ```
183 |
184 | | 字段 | 是否必须 | 描述 |
185 | | --- | --- | --- |
186 | | act | 是 | socket.io所需要执行的动作,暂只支持logs |
187 |
188 | #### Response
189 |
190 | *Header*
191 |
192 | HTTP/1.1 200 OK
193 |
194 | *Content*
195 |
196 | ```
197 | {
198 | "token" : "abcdef1234567890",
199 | "addr":”ip:port”
200 | }
201 | ```
202 |
203 | | 字段 | 是否必须 | 描述 |
204 | | --- | --- | --- |
205 | | token | 是 | 连接token |
206 | | addr | 是 | 前端脚本所需要访问服务器的ip和端口,由web服务器在拼接成为完成的http访问地址给前端页面 |
207 |
208 |
209 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
210 |
--------------------------------------------------------------------------------
/物联平台管理接口文档/设备数据转发流出数据格式.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # **设备数据转发流出数据说明**
4 |
5 | * 设备上下线、激活、发送透传数据(PIPE)、发送数据端点同步数据包(SYNC)时会在XLINK平台产生产生事件,平台使用者在产品管理中设置了针对这些事件的数据转发规则后,XLINK平台会将产品中的设备的这些事件按照既定的数据消息格式转发至第三方平台。本文档对转发的数据格式做相对的说明。
6 |
7 | ## 数据消息格式预览
8 |
9 | 所有的消息格式均以JSON标准格式转发出。
10 |
11 | 1. [STATE消息](#state)
12 | 2. [ACTIVATION消息](#active)
13 | 3. [PIPE消息](#pipe)
14 | 4. [PIPE_SYNC消息](#pipesync)
15 | 5. [SYNC消息](#sync)
16 |
17 | ## 数据消息详情
18 |
19 | ### **1.STATE消息**
20 |
21 | 设备在上下线时, XLINK平台会根据数据转发设置中的配置, 以STATE消息格式转发至配置中的url。
22 |
23 | **触发场景**
24 |
25 | 设备上线或者下线。
26 |
27 | **消息格式**
28 |
29 | ```
30 | {
31 | "type": "消息类型",
32 | "time": "消息产生时间",
33 | "product_id": "设备的产品ID",
34 | "ip": "设备IP",
35 | "id": "消息ID",
36 | "msg_id": "消息ID",
37 | "state": "消息状态"
38 | }
39 | ```
40 |
41 | **格式说明**
42 |
43 | 字段 | 是否必须 | 描述
44 | ---- | ---- | ----
45 | id |是 | 设备标识, 设备ID:device_id
46 | time | 是 | 设备上下线时间, yyyy-MM-dd HH:mm:ss.SS
47 | product_id | 是 | 设备所属产品标识, 产品ID
48 | state | 是 | STATE消息的类型,取值:`online` 或 `offline`
49 | msg_id | 是 | XLINK平台自定义的消息ID
50 | type | 是 | 均为STATE
51 | ip | 是 | 设备上下线的IP地址
52 |
53 |
54 | ### **2.ACTIVATION消息**
55 |
56 | 在激活设备时, XLINK平台会根据数据转发设置中的配置, 以ACTIVATION消息 格式转发至配置中的url。
57 |
58 | **触发场景**
59 |
60 | 设备被激活。
61 |
62 | **消息格式**
63 |
64 | ```
65 | {
66 | "type": "消息类型",
67 | "time": "消息产生时间",
68 | "product_id": "设备的产品ID",
69 | "id": "设备ID",
70 | "ip": "设备所处IP",
71 | "msg_id": "消息ID"
72 | }
73 | ```
74 |
75 | **格式说明**
76 |
77 | 字段 | 是否必须 | 描述
78 | ---- | ---- | ----
79 | type | 是 | 均为ACTIVATION
80 | time | 是 | 设备激活时间, yyyy-MM-dd HH:mm:ss.SS
81 | product_id | 是 | 设备所属产品标识, 产品ID
82 | id |是 | 设备标识, 设备ID:device_id
83 | ip | 是 | 设备激活的IP地址
84 | msg_id | 是 | XLINK平台自定义的消息ID
85 |
86 | ### **3.PIPE消息**
87 |
88 | 在设备发送PIPE包时, XLINK平台会根据数据转发设置中的配置, 以PIPE消息格式转发至配置中的url。
89 | PIPE消息为点对点发送,如APP控制指定的设备,或平台控制指定的设备
90 |
91 | **触发场景**
92 |
93 | 设备发送透传数据给用户(PIPE)
94 |
95 | **消息格式**
96 |
97 | ```
98 | {
99 | "type": "消息类型",
100 | "time": "消息产生时间",
101 | "product_id": "设备的产品ID",
102 | "from_id": "消息发送方ID",
103 | "to_id": "消息接受者ID",
104 | "msg_id": "消息ID",
105 | "data": "消息内容",
106 | "flow_type":"数据流向"
107 | }
108 | ```
109 |
110 | **格式说明**
111 |
112 | 字段 | 是否必须 | 描述
113 | ---- | ---- | ----
114 | type | 是 | 值为PIPE
115 | time | 是 | 设备激活时间, yyyy-MM-dd HH:mm:ss.SS
116 | product_id | 是 | 设备所属产品标识, 产品ID
117 | from_id | 是 | 数据发送方ID
118 | to_id | 是 | 数据接收方ID
119 | msg_id | 是 | XLINK平台自定义的消息ID
120 | data | 是 | 透传的数据。统一用base64编码包裹。
121 | flow_type | 是 | 1:设备往用户发送;2:用户往设备发送
122 |
123 |
124 | ### **4.PIPE_SYNC消息**
125 |
126 | 在设备或者用户发送PIPE_SYNC包时, XLINK平台会根据数据转发设置中的配置, 以PIPE_SYNC消息格式转发至配置中的url。
127 | PIPE_SYNC多为由设备发出,平台会将该数据广播到所有订阅了该设备的APP以及平台上
128 |
129 | **触发场景**
130 |
131 | 设备发送需要广播的透传数据(PIPE_SYNC)
132 |
133 | **消息格式**
134 |
135 | ```
136 | {
137 | "type": "消息类型",
138 | "time": "消息产生时间",
139 | "product_id": "设备的产品ID",
140 | "from_id": "消息发送方ID",
141 | "to_id": "消息接受者ID列表",
142 | "msg_id": "消息ID",
143 | "data": "消息内容",
144 | "flow_type":"数据流向"
145 | }
146 | ```
147 |
148 | **格式说明**
149 |
150 | 字段 | 是否必须 | 描述
151 | ---- | ---- | ----
152 | type | 是 | 值为PIPE_SYNC
153 | time | 是 | 设备激活时间, yyyy-MM-dd HH:mm:ss.SS
154 | product_id | 是 | 设备所属产品标识, 产品ID
155 | from_id | 是 | 数据发送方ID
156 | to_id | 是 | 数据接收方ID列表,数组
157 | msg_id | 是 | XLINK平台自定义的消息ID
158 | data | 是 | 透传的数据。统一用base64编码包裹。
159 | flow_type | 是 | 1:设备往用户发送;2:用户往设备发送
160 |
161 |
162 | ### **5.SYNC消息**
163 |
164 | 在设备发生数据端点变化时, XLINK平台会根据数据转发设置中的配置, 以SYNC消息格式转发至配置。
165 |
166 | **触发场景**
167 |
168 | 设备数据端点变化,向XLINK平台同步数据端点数据。
169 |
170 | **消息格式**
171 |
172 | ```
173 | {
174 | "type": "消息类型",
175 | "time": "消息发生时间",
176 | "product_id": "设备产品ID",
177 | "from_id": "消息发送方ID",
178 | "msg_id": "消息ID",
179 | "datapoint":[
180 | {
181 | "index": 0,
182 | "type": "bool/byte/short/int/string",
183 | "value": "xxxx"
184 | }
185 | ]
186 | }
187 | ```
188 |
189 | **格式说明**
190 |
191 | 字段 | 是否必须 | 描述
192 | ---- | ---- | ----
193 | type | 是 | 均为SYNC
194 | time | 是 | 设备激活时间, yyyy-MM-dd HH:mm:ss.SS
195 | product_id | 是 | 设备所属产品标识, 产品ID
196 | from_id | 是 | 产生数据的设备ID, device_id
197 | msg_id | 是 | XLINK平台自定义的消息ID
198 | datapoint | 是 | SYNC包数据,列表形式
199 | datapoint.index | 是 | sync包数据下标
200 | datapoint.type | 是 | sync包数据类型,有如下bool/byte/short/int/string
201 | datapoint.value | 是 | SYNC数据值
202 |
203 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
204 |
--------------------------------------------------------------------------------
/物联平台管理接口文档/设备数据转发配置接口.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # 设备数据转发配置规则接口
4 |
5 | 本文档介绍操作设备数据转发规则相关接口,包括增删改查。
6 |
7 |
8 | 平台可以把设备数据,通过设备数据转发的功能,抛给外部的服务程序。具体的接口如下:
9 |
10 | 1. [设备数据转发配置接口](https://github.com/xlink-corp/xlink-sdk/blob/master/物联平台管理接口文档/设备数据转发配置接口.md)
11 | 2. [数据转发服务器验证规则](https://github.com/xlink-corp/xlink-sdk/blob/master/物联平台管理接口文档/数据转发服务器验证规则.md)
12 | 3. [设备数据转发流出数据格式](https://github.com/xlink-corp/xlink-sdk/blob/master/物联平台管理接口文档/设备数据转发流出数据格式.md)
13 |
14 | ### 使用流程:
15 | 1. 按照[数据转发服务器验证规则](https://github.com/xlink-corp/xlink-sdk/blob/master/物联平台管理接口文档/数据转发服务器验证规则.md)准备好数据转发接收服务程序,并且部署到可以访问的地址。
16 | 2. 进入管理台,在需要转发数据的产品的数据转发配置中,添加配置规则(这个动作可以通过[设备数据转发配置接口](https://github.com/xlink-corp/xlink-sdk/blob/master/物联平台管理接口文档/设备数据转发配置接口.md)由程序实现)。关键是配置好程序的接收回调地址。
17 | 3. 设备端通过XLINK SDK,发送PIPE_SYNC或其他设备数据,平台就会收到设备数据,并且按照前面配置好的转发规则,将设备数据发送到对应的回调地址。
18 | 4. 接收程序通过[设备数据转发流出数据格式](https://github.com/xlink-corp/xlink-sdk/blob/master/物联平台管理接口文档/设备数据转发流出数据格式.md)接口中描述的格式规范,处理设备数据。
19 |
20 |
21 | ### 接口预览
22 |
23 | 1. [添加设备转发规则](#add)
24 | 2. [删除设备转发规则](#delete)
25 | 3. [更新设备转发规则](#modify)
26 | 4. [获取设备转发规则列表](#list)
27 | 5. [附录](#addenda)
28 |
29 |
30 | ### 接口详情
31 |
32 |
33 | ### **1.添加设备转发规则**
34 |
35 | 企业管理员根据产品标识product_id url中 添加一个设备转发规则,用于定义接收到的数据转发至何处。
36 |
37 | **Request**
38 |
39 | URL
40 |
41 | POST /v2/product/{product_id}/dds
42 |
43 | 字段 | 是否必须 | 描述
44 | ---- | ---- | ----
45 | product_id |是 | 产品ID
46 |
47 | Header
48 |
49 | Content-Type:application/json
50 | Access-Token:"调用凭证"
51 |
52 | Content
53 |
54 | {
55 | "data_type": [
56 | "1",
57 | "2"
58 | ],
59 | "destination": {
60 | "type": "数据分发类型",
61 | "url": "数据分发url",
62 | "token": "分发url访问所需凭证"
63 | }
64 | }
65 |
66 | 字段 | 是否必须 | 描述
67 | ---- | ---- | ----
68 | data_type | 是 | 所需要从设备的数据中转发的类型,用列表表示,[附录](#addenda)
69 | destination | 是 | 数据分发目的地
70 | type | 是 | 数据分发类型,见[附录](#addenda)
71 | url | 是 | 数据分发目的地url
72 | token | 是 | 数据分发目的地url访问所需凭证
73 |
74 |
75 | **Response**
76 |
77 | Header
78 |
79 | HTTP/1.1 200 OK
80 |
81 | Content
82 |
83 | {
84 | "id":"数据转发规则的ID"
85 | }
86 |
87 |
88 | ### **2.删除设备转发规则**
89 |
90 | 企业管理员根据产品标识product_id url中 删除一个设备转发规则。
91 |
92 | **Request**
93 |
94 | URL
95 |
96 | DELETE /v2/product/{product_id}/dds/{dispatch_id}
97 |
98 | 字段 | 是否必须 | 描述
99 | ---- | ---- | ----
100 | product_id |是 | 产品ID
101 | dispatch_id |是 | 转发规则ID
102 |
103 | Header
104 |
105 | Content-Type:application/json
106 | Access-Token:"调用凭证"
107 |
108 | Content
109 |
110 | 无
111 |
112 | **Response**
113 |
114 | Header
115 |
116 | HTTP/1.1 200 OK
117 |
118 | Content
119 |
120 | 无
121 |
122 |
123 | ### **3.更新设备转发规则**
124 |
125 | 企业管理员根据产品标识product_id url中 更新一个设备转发规则,用于更新接收到的数据转发至何处、所需token以及哪些类型数据需要关注。
126 |
127 | **Request**
128 |
129 | URL
130 |
131 | PUT /v2/product/{product_id}/dds/{dispatch_id}
132 |
133 | 字段 | 是否必须 | 描述
134 | ---- | ---- | ----
135 | product_id | 是 | 产品ID
136 | dispatch_id |是 | 转发规则ID
137 |
138 | Header
139 |
140 | Content-Type:application/json
141 | Access-Token:"调用凭证"
142 |
143 | Content
144 |
145 | {
146 | "data_type": [
147 | "1",
148 | "2"
149 | ],
150 | "destination": {
151 | "type": "数据分发类型",
152 | "url": "数据分发url",
153 | "token": "分发url访问所需凭证"
154 | }
155 | }
156 |
157 | 字段 | 是否必须 | 描述
158 | ---- | ---- | ----
159 | data_type | 是 | 所需要从设备的数据中转发的类型,用列表表示,[附录](#addenda)
160 | destination | 是 | 数据分发目的地
161 | type | 是 | 数据分发类型,见[附录](#addenda)
162 | url | 是 | 数据分发目的地url
163 | token | 是 | 数据分发目的地url访问所需凭证
164 |
165 | **Response**
166 |
167 | Header
168 |
169 | HTTP/1.1 200 OK
170 |
171 | Content
172 |
173 | {
174 | "id":"转发规则ID",
175 | "data_type": [
176 | "1",
177 | "2"
178 | ],
179 | "destination": {
180 | "type": "数据分发类型",
181 | "url": "数据分发url",
182 | "token": "分发url访问所需凭证"
183 | }
184 | }
185 |
186 | 字段 | 是否必须 | 描述
187 | ---- | ---- | ----
188 | id | 是 | 转发规则ID
189 | data_type | 是 | 所需要从设备的数据中转发的类型,用列表表示,[附录](#addenda)
190 | destination | 是 | 数据分发目的地
191 | type | 是 | 数据分发类型,见[附录](#addenda)
192 | url | 是 | 数据分发目的地url
193 | token | 是 | 数据分发目的地url访问所需凭证
194 |
195 |
196 | ### **3.获取设备转发规则列表**
197 |
198 | 企业管理员根据产品标识product_id url中 获取产品的设备转发规则列表。
199 |
200 | **Request**
201 |
202 | URL
203 |
204 | GET /v2/product/{product_id}/dds_list
205 |
206 | Header
207 |
208 | Content-Type:application/json
209 | Access-Token:"调用凭证"
210 |
211 | Content
212 |
213 | 无
214 |
215 | **Response**
216 |
217 | Header
218 |
219 | HTTP/1.1 200 OK
220 |
221 | Content
222 |
223 | {
224 | "count":"数量",
225 | "list":[
226 | {
227 | "id":"转发规则ID",
228 | "data_type": [
229 | "1",
230 | "2"
231 | ],
232 | "destination": {
233 | "type": "数据分发类型",
234 | "url": "数据分发url",
235 | "token": "分发url访问所需凭证"
236 | }
237 | },
238 | {
239 | "id":"转发规则ID",
240 | "data_type": [
241 | "1",
242 | "2"
243 | ],
244 | "destination": {
245 | "type": "数据分发类型",
246 | "url": "数据分发url",
247 | "token": "分发url访问所需凭证"
248 | }
249 | }
250 | ]
251 | }
252 |
253 | 字段 | 是否必须 | 描述
254 | ---- | ---- | ----
255 | count | 是 | 查询到的转发规则数量
256 | id | 是 | 转发规则ID
257 | data_type | 是 | 所需要从设备的数据中转发的类型,用列表表示,[附录](#addenda)
258 | destination | 是 | 数据分发目的地
259 | type | 是 | 数据分发类型,见[附录](#addenda)
260 | url | 是 | 数据分发目的地url
261 | token | 是 | 数据分发目的地url访问所需凭证
262 |
263 |
264 | ### **附录**
265 |
266 |
267 | **支持转发数据的类型**
268 |
269 | 枚举值 | 描述
270 | ---- | ----
271 | 1 | 设备上线
272 | 2 | 设备下线
273 | 3 | 设备激活
274 | 4 | Pipe包
275 | 5 | 设备同步包
276 | 6 | 用户上线
277 | 7 | 用户下线
278 |
279 | **数据分发类型**
280 |
281 | 枚举值 | 描述
282 | ---- | ----
283 | 1 | 转发到外部url
284 | 2 | 转发到内部插件处理单元
285 |
286 |
287 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
288 |
--------------------------------------------------------------------------------
/物联平台管理接口文档/邮件模版.md:
--------------------------------------------------------------------------------
1 | # 邮件模板管理 #
2 |
3 | 邮件模板管理为企业提供各种定制化邮件内容,按要求发送给企业用户等系列功能。目前提供如下模板功能:
4 | - 用户注册激活邮件模板
5 | - 用户找回密码邮件模板
6 |
7 | ## 1. 接口概览 ##
8 |
9 | 1. [新增邮件模板](#add_template)
10 | 2. [修改邮件模板](#modify_template)
11 | 3. [获取邮件模板](#aquire_email_list)
12 | 4. [获取邮件发送域名](#get_email_domain)
13 | 5. [设置邮件发送域名](#set_email_domain)
14 | 6. [邮件模板正文变量说明](#content)
15 | 7. [附录](#appendix)
16 |
17 | ## 2. 接口详情 ##
18 |
19 | ### 2.1 新增邮件模板 ###
20 |
21 | 新增邮件模板需要向服务器发起一个POST请求。
22 |
23 | #### Request ####
24 |
25 | 请求的url、header以及必须填充的content如下:
26 |
27 | URL
28 |
29 | POST /v2/email/template
30 |
31 | HEADER
32 |
33 | Content-Type:"application/json"
34 | Access-Token:"调用凭证"
35 |
36 | Content
37 |
38 | {
39 | "name":"模板名称",
40 | "subject":"邮件标题",
41 | "sender":"发送者",
42 | "content":"邮件正文",
43 | "type":"邮件模板类型",
44 | "lang":"语言类型"
45 | }
46 |
47 | 字段 |是否必须| 描述
48 | --------|-------|-----
49 | name | 是 | 邮件模板名称,30个字符以内
50 | sender | 是 | 邮件发送方
51 | content | 是 | 邮件正文,在不同邮件模板类型下,正文会有不同的参数必填项,[邮件模板正文变量说明](#content)
52 | type | 是 | 邮件模板类型,见[附录](#template_type)
53 | lang | 是 | 语言类型,见[附录](#lang)
54 |
55 | #### Response ####
56 |
57 | 新增模板得到服务器响应如下:
58 |
59 | Header
60 |
61 | HTTP/1.1 200 OK
62 |
63 | Content
64 |
65 | {
66 | "id":"邮件模板ID",
67 | "name":"模板名称",
68 | "subject":"邮件标题",
69 | "sender":"发送者",
70 | "content":"邮件正文",
71 | "type":"邮件模板类型",
72 | "lang":"语言类型",
73 | "status":"邮件模板审核状态",
74 | "update_time":"更新时间"
75 | }
76 |
77 | 字段 |是否必须| 描述
78 | --------|-------|----
79 | id |是 | 邮件模板ID
80 | name |是 | 邮件模板名称,30个字符以内
81 | sender |是 | 邮件发送方
82 | content |是 | 邮件正文,在不同邮件模板类型下,正文会有不同的变量必填项,[邮件模板正文变量说明](#content)
83 | type |是 | 邮件模板类型,见[附录](#template_type)
84 | lang |是 | 语言类型,见[附录](#lang)
85 | status |是 | 邮件模板审核状态,见[附录](#status)
86 | update_time |是 | 更新时间,例:2014-10-09T08:15:40.843Z
87 |
88 |
89 | ### 2.2 修改邮件模板 ###
90 |
91 | 修改邮件模板需要向服务器发起PUT请求。
92 |
93 | #### Request ####
94 |
95 | 请求的url、header以及content如下,其中url的***{template_id}***为新增邮件模板返回的ID值。
96 |
97 | URL
98 |
99 | PUT /v2/email/template/{template_id}
100 |
101 | Header
102 |
103 | Content-Type:"application/json"
104 | Access-Token:"调用凭证"
105 |
106 | Content
107 |
108 | {
109 | "name":"模板名称",
110 | "subject":"邮件标题",
111 | "sender":"发送者",
112 | "content":"邮件正文"
113 | }
114 |
115 | #### Response ####
116 |
117 | 修改邮件模板得到服务器响应如下:
118 |
119 | Header
120 |
121 | HTTP/1.1 200 OK
122 |
123 | Content
124 |
125 | {
126 | "id":"邮件模板ID",
127 | "name":"模板名称",
128 | "subject":"邮件标题",
129 | "sender":"发送者",
130 | "content":"邮件正文",
131 | "type":"邮件模板类型",
132 | "lang":"语言类型",
133 | "status":"邮件模板审核状态",
134 | "update_time":"更新时间"
135 | }
136 |
137 | ### 2.3 获取邮件模板列表 ###
138 |
139 | 获取邮件模板列表需要向服务器发起GET请求。
140 |
141 | #### Request ####
142 |
143 | 请求的url、header以及content如下:
144 |
145 | URL
146 |
147 | GET /v2/email/template_list
148 |
149 | Header
150 |
151 | Content-Type:"application/json"
152 | Access-Token:"调用凭证"
153 |
154 | Content
155 |
156 | 无
157 |
158 | #### Response ####
159 |
160 | 获取邮件模板列表得到服务器响应如下:
161 |
162 | Header
163 |
164 | HTTP/1.1 200 OK
165 |
166 | Content
167 |
168 | {
169 | "count":"返回数量",
170 | "list":
171 | {
172 | "id":"邮件模板ID",
173 | "name":"模板名称",
174 | "subject":"邮件标题",
175 | "sender":"发送者",
176 | "content":"邮件正文",
177 | "type":"邮件模板类型",
178 | "lang":"语言类型",
179 | "status":"邮件模板审核状态",
180 | "update_time":"更新时间"
181 | }
182 | }
183 |
184 |
185 | ### 2.4 获取邮件发送域名 ###
186 |
187 | 获取发送邮件对应域名及状态需要向服务器发起GET请求。
188 |
189 | #### Request ####
190 |
191 | 请求的url、header以及content如下:
192 |
193 | URL
194 |
195 | GET /v2/corp/email_domain
196 |
197 | Header
198 |
199 | Content-Type:"application/json"
200 | Access-Token:"调用凭证"
201 |
202 | Content
203 |
204 | 无
205 |
206 | #### Response ####
207 |
208 | 获取发送邮件对应域名及状态得到服务器响应如下:
209 |
210 | Header
211 |
212 | HTTP/1.1 200 OK
213 |
214 | Content
215 |
216 | {
217 | "domain":"域名",
218 | "state":"域名状态",
219 | "info":{
220 | "name": "***",
221 | "type": "普通",
222 | "verify": 30,
223 | "verifyKey.domain": "***",
224 | "verifyKey.value": "***",
225 | "spf.domain": "***",
226 | "spf.value": "v=spf1 include:spf.sendcloud.org ~all",
227 | "dkim.domain": "***",
228 | "dkim.value": "k=rsa;p=***",
229 | "cname.domain": "***",
230 | "cname.value": "***",
231 | "mx.domain": "***",
232 | "mx.value": "***",
233 | "gmtCreated": "2014-11-01 22:41:52",
234 | "gmtUpdated": "2015-09-25 10:56:06"
235 | }
236 | }
237 | 字段 |是否必须| 描述
238 | --------|-------|----
239 | domain |是 | 域名名字
240 | state |是 | 域名状态,见[附录](#domainstate)
241 | info |是 | 配置信息
242 | ame |是 | 域名名称
243 | type |是 | 域名类型
244 | verify |是 | 域名验证值
245 | verifyKey.domain |是 | 此域名 VERIFY_KEY 的主机记录
246 | verifyKey.value |是 | 此域名 VERIFY_KEY 的配置值
247 | spf.domain |是 | 此域名 SPF 的主机记录
248 | spf.value |是 | 此域名 SPF 的配置值
249 | dkim.domain |是 | 此域名 DKIM 的主机记录
250 | dkim.value |是 | 此域名 DKIM 的配置值
251 | cname.domain |是 | 此域名 CNAME 的主机记录
252 | cname.value |是 | 此域名 CNAME 的配置值
253 | mx.domain |是 | 此域名 MX 的主机记录
254 | mx.value |是 | 此域名 MX 的配置值
255 | gmtCreated |是 | 域名创建时间
256 | gmtUpdated |是 | 域名修改时间
257 |
258 |
259 | ### 2.5 设置邮件发送域名 ###
260 |
261 | 设置邮件发送域名需要向服务器发起POST请求。
262 |
263 | #### Request ####
264 |
265 | 请求的url、header以及content如下:
266 |
267 | URL
268 |
269 | POST /v2/corp/email_domain
270 |
271 | Header
272 |
273 | Content-Type:"application/json"
274 | Access-Token:"调用凭证"
275 |
276 | Content
277 |
278 | {
279 | "domain":"域名名字"
280 | }
281 | 字段 |是否必须| 描述
282 | --------|-------|----
283 | domain |是 | 域名名字
284 |
285 |
286 | #### Response ####
287 |
288 | 设置邮件发送域名得到服务器响应如下:
289 |
290 | Header
291 |
292 | HTTP/1.1 200 OK
293 |
294 | Content
295 |
296 | 无
297 |
298 |
299 | ## 3. 邮件模板正文变量说明 ##
300 |
301 | 设置邮件模板正文需要注意要被替换的变量名规则。
302 |
303 | ### 3.1 用户注册激活邮件模板实例 ###
304 |
305 | 如下为用户向云智易注册后发送的激活帐号邮件模板。
306 |
307 | ***发件人:***
308 |
309 | xlink@mail.xlink.cn
310 |
311 | ***标题:***
312 |
313 | 云智易注册通知
314 |
315 | ***正文:***
316 |
317 | 亲爱的 %username%,
318 |
319 | 欢迎注册云智易,请点击下方的链接完成帐号激活。
320 |
321 | http://admin.xlink.cn/#!/user-email-activate/%corp_id%/%email%/%verifycode%
322 |
323 | (本链接将在48小时后失效)
324 |
325 | 本邮件由系统自动发出,请勿回复
326 |
327 | ---------
328 |
329 | 云智易
330 |
331 | %date%
332 |
333 | *以下为模板内容变量必填项:*
334 |
335 | 字段 | 描述
336 | ---- |----
337 | %username% | 用户昵称,Base64编码
338 | %corp_id% | 企业ID,Base64编码
339 | %email% | 邮箱地址,Base64编码
340 | %verifycode%| 验证码,Base64编码
341 | %date% | 日期,例:2016-01-13 15:30
342 |
343 |
344 | ### 3.2 用户找回密码邮件模板 ###
345 |
346 | 如下为用户忘记密码,申请邮件找回密码的邮件模板。
347 |
348 | ***发件人:***
349 |
350 | xlink@mail.xlink.cn
351 |
352 | ***标题:***
353 |
354 | 云智易找回密码
355 |
356 | ***正文:***
357 |
358 | 亲爱的 %username%,
359 |
360 | 我们收到了您找回密码的请求,请点击下方链接完成密码找回:
361 |
362 | http://admin.xlink.cn/#!/user-password-reset/%corp_id%/%email%/%verifycode%
363 |
364 | (本链接将在48小时后失效)
365 |
366 | 本邮件由系统自动发出,请勿回复
367 |
368 | ---------
369 |
370 | 云智易
371 |
372 | %date%
373 |
374 | *以下为模板内容变量必填项:*
375 |
376 | 字段 | 描述
377 | ---- |----
378 | %username% | 用户昵称,Base64编码
379 | %corp_id% | 企业ID,Base64编码
380 | %email% | 邮箱地址,Base64编码
381 | %verifycode%| 验证码,Base64编码
382 | %date% | 日期,例:2016-01-13 15:30
383 |
384 | ## 附录 ##
385 |
386 | ### 1. 邮件模板类型 ###
387 |
388 | 模板类型 |枚举值
389 | ---- |----
390 | 用户注册激活邮件 | 1
391 | 用户找回密码邮件 | 2
392 |
393 | ### 2. 邮件模板审核状态 ###
394 |
395 | 审核状态 | 枚举值
396 | ---- |----
397 | 未提交审核 | -2
398 | 审核不通过 | -1
399 | 待审核 | 0
400 | 审核通过 | 1
401 |
402 | ### 3. 语言类型 ###
403 |
404 | 语言值 | 说明
405 | ---- | ----
406 | zh-cn | 中文(简体)
407 | en-us | 英语(美国)
408 |
409 | ### 4. 邮件域名状态 ###
410 | 审核状态 | 枚举值
411 | ---- |----
412 | 未验证 | 1
413 | 可使用 | 2
414 | 已验证 | 3
--------------------------------------------------------------------------------
/硬件模拟器/README.md:
--------------------------------------------------------------------------------
1 | # 云智易硬件模拟器使用指南 #
2 |
3 | # 目录 #
4 |
5 | - [一、 硬件模拟器是什么?](#step1)
6 | - [1.1 应用简介](#step1.1)
7 | - [1.2 操作环境](#step1.2)
8 | - [1.3 运行原理](#step1.2)
9 |
10 | - [二、 为什么要用硬件模拟器?](#step2)
11 |
12 | - [三、 如何使用?](#step3)
13 | - [3.1 前期准备](#step3.1)
14 | - 3.1.1注册或登录云智易平台账号
15 | - 3.1.2 添加产品
16 | - 3.1.3 添加设备
17 | - 3.1.4 设置数据端点
18 | - [3.2 硬件模拟器](#step3.2)
19 | - 3.2.1硬件模拟器下载与安装
20 | - 3.2.2硬件模拟器启动与断开
21 | - 3.2.3 透传APP连接
22 | - 3.2.4 透传模式
23 | - 3.2.5 数据端点
24 | - 3.2.6 重置设备
25 | - 3.2.7 断线重连
26 |
27 | ## 一、硬件模拟器是什么? ##
28 | ### 1.1 应用简介 ###
29 | 为方便接入平台的APP开发者进行开发,云智易提供硬件模拟器工具来模拟智能设备。本模拟器工具可以模拟实际设备进行收发数据端点数据和透传数据。主要功能点:
30 |
31 | 1. 显示APP发送给设备的透传指令和数据端点;
32 | 2. 响应App的查询指令和数据端点;
33 | 3. 模拟真实设备上报透传指令和数据端点到App和云平台。
34 |
35 |
36 | 如此可以帮助开发人员在早期开发硬件未到位时进行开发,协助排查程序问题,以及使用本工具来验证通信协议的正确性。
37 |
38 | ### 1.2 操作环境 ###
39 | 应用平台:WinXP、win7、Win8、Win10
40 |
41 | ### 1.3 运行原理 ###
42 | 基于企业在管理后台维护的产品信息、设备信息和数据端点信息,真实有效模拟智能硬件设备的各个数据通讯过程和数据交互。
43 |
44 | 
45 |
46 | ## 二、为什么要用硬件模拟器?
47 | 硬件模拟器可以模拟真实智能设备与云端及APP的通讯。无需为了开发App应用程序而购买硬件产品。你可以使设备模拟器来测试App和模拟设备之间的通信。 减少因硬件开发周期问题导致的App开发及设备对接问题。 缩短开发周期,提高App开发效率。
48 |
49 | ## 三、如何使用? ##
50 |
51 | 
52 | ### 3.1前期准备 ###
53 | #### 3.1.1 注册或登录云智易平台账号 ####
54 | 1. 打开云智易开发者网站:[http://www.xlink.cn](http://www.xlink.cn)
55 | 2. 点击免费注册按钮或者登录按钮。
56 | 3. 输入注册信息进行注册或者登录信息进行登录。
57 | 4. 进入云智易企业管理后台。
58 |
59 | #### 3.1.2 添加产品 ####
60 | 1. 点击云智易企业管理后台左侧菜单栏中的【添加产品】按钮。
61 | 2. 输入产品相关信息进行添加。
62 |
63 | 
64 |
65 | #### 3.1.3 添加设备 ####
66 | 1. 在企业管理后台左侧产品列表中点击上一步添加的产品。
67 | 2. 切换到【设备管理】标签,点击【添加设备】按钮,输入设备MAC地址,MAC地址在后续步骤中需要使用。
68 |
69 | 
70 | #### 3.1.4 设置数据端点 ####
71 | 1. 点击企业管理后台左侧上一步添加的产品列表。
72 | 2. 在右边子页面中点击【概览】可以查看产品ID(PID)和产品密钥(PKEY),产品ID和产品密匙在后续步骤中需要使用。
73 | 3. 切换到【数据端点】标签,点击【添加数据端点】按钮,根据设备属性进行数据端点的添加。
74 |
75 | 
76 |
77 | ### 3.2 硬件模拟器 ###
78 | #### 3.2.1 硬件模拟器下载与安装 ####
79 | 1. 硬件模拟器下载地址:
80 | 2. 下载解压后,点击【XLINKDeviceEMU.EXE】即可运行硬件模拟器。注意:安装文件中的配置文件不需要改动。
81 |
82 | 
83 | #### 3.2.2 硬件模拟器启动与断开 ####
84 | 1. 点击硬件模拟器图标,进入硬件模拟器主页。设备未启动时,【数据端点】的【设置端点值】按钮与【透传模式】的【发送】按钮不可点击。
85 | 
86 | 2. 在Product ID与Product key输入框中输入云智易企业管理平台->产品列表->概览中查看的产品ID与产品密钥。
87 | 3. 在MAC Address输入框中输入云智易企业管理平台->产品列表->设备管理中MAC地址。
88 | 4. 点击【启动】按钮,即可启动相应设备。启动设备之后,相应的产品ID、产品密钥、MAC地址不能修改。
89 | 5. 点击【断开】按钮,即可断开相应设备。并且可进行相关产品ID、产品密钥、MAC地址的修改。注:【断开】按钮需要启动设备之后才会出现。
90 | 6. 在【日志窗口】中可实时查看设备的相关反馈数据。并且该日志将以.log形式保存在程序安装文件夹中。
91 |
92 | #### 3.2.3 透传APP连接 ####
93 | 1. 点击APP图标,输入企业ID、账号与密码,进入APP主页。
94 | 2. 进行设备扫描,扫描成功之后,输入设备AccessKey进行连接。
95 | 3. 操作APP,硬件模拟器日志窗口正确显示相关数据。并且硬件模拟器中的设备ID、设备密钥、设备使用权密钥的值设置为扫描到的设备的相应ID、密钥与使用权密钥。
96 |
97 | #### 3.2.4 透传模式 ####
98 | 透传模式使用产商自定义的二进制数据协议来做设备的控制和状态反馈, 可定制性高、使用灵活。
99 |
100 | 1. 点击硬件模拟器主页中【透传模式】按钮。
101 | 2. 在透传模式输入框中输入需要发送数据。
102 | 3. 点击【发送】按钮,输入框中输入的数据会同步发送到所有连接的APP,并且可以在日志窗口中查看操作日志。
103 | 4. 若勾选16进制发送,则输入的数据以16进制格式发送。若不勾选则以字符串的形式发送。
104 | 5. 控制该设备的APP也正确显示发送与接收到的数据。
105 |
106 | 
107 | #### 3.2.5 数据端点模式 ####
108 | 数据端点使用云智易模板化的通讯协议,平台的很多SaaS功能需要结合数据端点来使用,比如报警推送,数据存储,设备快照。数据端点也可以被当做普通的控制协议来使用。
109 |
110 | 1. 设备启动之后,点击硬件模拟器主页中【数据端点】按钮。
111 | 2. 在数据端点列表中选择需要设置的数据端点。
112 | 3. 在数据端点输入框输入需要设置的数据。
113 | 4. 点击【设置端点值】按钮,模拟设备主动上报数据端点所设置的信息,设置的数据端点信息会同步发送到所有连接的手机APP和企业管理后台。并且日志窗口中可以查看到操作日志。
114 |
115 | 
116 | #### 3.2.6 重置设备 ####
117 | 重置设备会清除设备本地存储的deivce Id,device Key,AccessKey,并且会清除所有的订阅关系, 恢复到设备的出厂状态下。 操作步骤如下:
118 |
119 | 1. 断开设备后,可点击【重置设备】按钮。
120 | 2. deivce Id,device Key,AccessKey会自动变为初始状态。
121 | 注:当设备处于连接状态时,【重置设备】按钮不可点击。
122 |
123 | 
124 |
125 | #### 3.2.7 断线重连 ####
126 | 断线重连功能主要用于网络断开时,模拟器自动重新连接服务器。程序默认开启,可以点击【断线重连】复选框取消断线重连功能。
127 |
128 |
129 | 
130 |
--------------------------------------------------------------------------------
/硬件模拟器/img/log.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器/img/log.png
--------------------------------------------------------------------------------
/硬件模拟器/img/主页.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器/img/主页.png
--------------------------------------------------------------------------------
/硬件模拟器/img/安装.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器/img/安装.png
--------------------------------------------------------------------------------
/硬件模拟器/img/数据端点.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器/img/数据端点.png
--------------------------------------------------------------------------------
/硬件模拟器/img/数据端点值.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器/img/数据端点值.png
--------------------------------------------------------------------------------
/硬件模拟器/img/断线重连.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器/img/断线重连.png
--------------------------------------------------------------------------------
/硬件模拟器/img/流程图.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器/img/流程图.jpg
--------------------------------------------------------------------------------
/硬件模拟器/img/添加产品.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器/img/添加产品.png
--------------------------------------------------------------------------------
/硬件模拟器/img/添加设备.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器/img/添加设备.png
--------------------------------------------------------------------------------
/硬件模拟器/img/运行原理1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器/img/运行原理1.jpg
--------------------------------------------------------------------------------
/硬件模拟器/img/运行原理2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器/img/运行原理2.jpg
--------------------------------------------------------------------------------
/硬件模拟器/img/透传模式输入.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器/img/透传模式输入.png
--------------------------------------------------------------------------------
/硬件模拟器/img/重置设备.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器/img/重置设备.png
--------------------------------------------------------------------------------
/硬件模拟器_v3/README.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # XLINK设备模拟器(v3)使用说明
4 |
5 | ## 概要
6 |
7 | * XLINK设备模拟器是一个Windows应用程序,用来模拟XLINK设备的通讯功能,特别是验证与测试XLINK设备通讯协议,包括局域网内的通讯协议和云端的通讯协议;
8 | * 局域网通讯主要包括:
9 | 1. 设备发现;
10 | 2. 局域网内握手认证;
11 | 3. 局域网内数据透传;
12 | 4. 局域网内数据端点控制与通知;
13 | * 云端通讯主要包括:
14 | 1. 设备激活;
15 | 2. 连接登录;
16 | 3. 设备订阅;
17 | 4. 云端数据透传;
18 | 5. 云端数据端点控制与通知;
19 | 6. 模拟固件升级;
20 | * XLINK设备模拟器可以配合APP程序,模拟和验证设备通讯协议以及控制功能;
21 |
22 | ### 文件包
23 |
24 | * XLINK设备模拟器为绿色软件,包括下列5个文件。
25 | 1. **Newtonsoft.Json.dll**:JSON解析库;
26 | 2. **Newtonsoft.Json.xml**: JSON解析库配置文件;
27 | 3. **WpfXDeviceEmu.exe**: 模拟器主程序;
28 | 4. **WpfXDeviceEmu.ini**: 模拟器配置文件;
29 | 5. **XLinkDeviceLib.dll**: XLINK模拟器核心库;
30 |
31 | ### 运行环境
32 |
33 | * XLINK模拟器采用微软.Net 4.0框架开发;需要依赖于微软.Net 4.0运行环境;
34 | * .Net 4.0 framework下载地址: [https://www.microsoft.com/zh-CN/download/details.aspx?id=17718](https://www.microsoft.com/zh-CN/download/details.aspx?id=17718)
35 | * XLINK模拟器在Windows Vista以上运行良好,不建议使用在Windows XP上使用;不支持Windows XP以下系统;
36 | * XLINK模拟器支持32位Windows环境和64位Windows环境;
37 |
38 | ## 启动和使用
39 |
40 | ### 1. 安装微软.Net 4.0框架
41 |
42 | * 再次说明模拟器程序是采用.Net 4.0框架实现,请先安装微软.Net 4.0运行环境;
43 |
44 | ### 2. 配置程序
45 |
46 | * WpfXDeviceEmu.ini中包含了程序运行的基本环境的配置,如下:
47 |
48 | ```
49 | [Application]
ApiHost=http://api.xlink.cn
ServerHost=cm.xlink.cn:23778
[Product]
ProductID=160fa2aefc86b000160fa2aefc86b001
ProductKey=5db1fdd114763c5f9dc0ee996599a778
MAC=1122334455667788
50 | ```
51 |
52 | 条目 | 说明
53 | --- | ---
54 | ApiHost | 程序访问Restful接口的地址,SaaS版本不用进行配置,私有云环境请配置成为对应的访问地址;
55 | ServerHost | 程序连接CM服务器地址,SaaS版本不用进行配置,私有云环境请配置成为对应的访问地址;
56 | ProductID | 预置的产品ID,请开发人员自行设置;
57 | ProductKey | 预置的产品Key,请开发人员自行设置;
58 | MAC | 模拟设备的MAC地址,必须使用已经添加到管理台,进行了预授权的设备的MAC地址;
59 |
60 | ### 3. 运行程序
61 |
62 | * 运行WpfXDeviceEmu.exe程序,弹出程序主界面:
63 |
64 | ### 4. 使用
65 |
66 | * 设备模拟器分为4大区域:Device info、Local connect Apps、Data以及Log output:
67 | 
68 |
69 | #### 1. Device info:
70 |
71 | * Device info区域用来描述和设置设备的基本信息,包括ProductID,ProductKey和模拟设备MAC地址;
72 | * **Firmware Version**: 设备模拟器模拟的固件版本,从1开始。每次Reset设备,版本会重置为1。
73 | * **Device ID**:在激活后,在这里会显示设备ID;
74 | * **Access Key**:在APP内网发现并且设置了AccessKey以后,这里会显示设置的AccessKey,模拟器程序会保存设置的AccessKey,下次程序启动后可继续使用。
75 | * **Subscription Key**,简称SubKey,在模拟器被APP设置了AccessKey时自动生成,会显示在Subscription Key区域,并且也会保存下来,下次启动模拟器程序还可继续使用。
76 | * **Auto reconnect**,选中后,当程序与云端断开后,会自动重新连接。
77 | * **注意:** 每次与云端连接断开的同时,也会断开局域网内已经和模拟器连接的APP,APP需要重新与模拟器进行内网认证连接后方可再次进行内网通讯;
78 | * **Reset Device**:当改变了ProductID,ProductKey或MAC地址后,需要Reset device方可生效;
79 | * **注意:** Reset Device会断开设备与云端的连接;
80 | * **Power ON**:模拟器启动,开始内网通讯监听,连接云端;成功与云端连接后,按钮会变为Power OFF,点击Power OFF会模拟设备断电的动作,与云端的通讯会断开,同时内网通讯也会断开。
81 |
82 | #### 2. Local connect apps:
83 |
84 | * 通过内网发现以及内网通讯连接上来的APP,会在这里显示,如图:
85 | * 显示内容包括
86 | * 1. Session ID;
87 | * 2. APP的IP和端口;
88 | * 3. APP与设备最后一次心跳时间;
89 | * 4. APP与设备的连接状态,Local connect/Local disconnect;
90 |
91 | #### 3. Data:
92 |
93 | * Data区域用来显示和模拟数据通讯功能,包括DataPoint(数据端点)的显示和设置,PIPE SYNC(透传数据的)接收显示和发送;
94 | * **DataPoint:**
95 | * 在管理台如果配置了该产品的数据端点列表,那么模拟器在激活和连接到云端以后,会自动去获取该产品的数据端点列表,如图:
96 | * 双击某个条目,在下方的输入区域输入数据,点击Set value,便可设置该数据端点,同时模拟器会在内网和云端通知该数据端点的变化,内网APP和云端都会收到该消息;
97 | * 如果APP和云端对该设备的数据端点进行了设置,界面上的条目也会产生相应的变化;
98 | * **PIPE SYNC:**
99 | * 用来显示设备接收到的云端透传数据以及局域网内的透传数据,如图:
100 | * 在下方的输入框输入内容,并且点击Send,也可以进行透传数据的发送, **注意:该版本的模拟器暂时只支持PIPE SYNC,也就是透传数据的广播发送,暂时还不支持针对某个APP的透传数据的发送。**
101 | * 在发送透传数据的时候,模拟器支持通过内网发送透传数据( **选中Local data** ),也支持用户输入16进制数据进行发送( **选中Hex data** );
102 | * **OTA**
103 | * OTA区域用来显示设备模拟器从云端获取到的OTA信息,以及模拟升级完成升级任务,并且上报升级结果。
104 | * 设备模拟器上线后,若云端有针对该设备的升级信息,模拟器会收到云端的推送消息,并且显示在OTA的Tab中(且Tab名会变成 **OTA(!)** ),如图:
105 | * 进入OTA Tab,可以看到OTA的相关信息,包括固件文件下载地址,hash值,以及相关参数,如图:用户可以点击 **"Update Complete"** 按钮,模拟设备升级后的动作,平台会收到设备升级完成消息,并且更新云端的设备版本信息。
106 | * 完成升级后界面的变化:若通讯正常,模拟器再次上线,将不会再收到OTA消息。若需要再次测试OTA的功能,可以使用 **"Reset Device"** 功能,将设备重置为版本1。
107 |
108 | #### 4. Log output:
109 |
110 | * 设备模拟器运行日志显示区域;
111 | * **Clear**按钮用来清除日志;
112 | * **日志级别下拉框**用来过滤需要显示的日志级别。 **注意:该功能暂只能过滤新来的日志,已经显示的日志不会过滤掉。**
113 |
114 | ## 关于模拟器的二次开发
115 |
116 | * XLINK设备模拟器是XLINK针对Windows下XLINK设备SDK的一个应用实现,XLINK可以提供Windows下的设备SDK,厂商可以根据自己的需求对设备模拟器进行二次开发。
117 | * XLINK设备模拟器采用.Net制作,也是为了方便厂商能够快速的进行二次开发,XLINK可以提供设备模拟器的工程源码,厂商可以作为参考,也可在源码工程上直接进行修改。
118 |
119 | ## 下载地址
120 |
121 | 版本 | 下载地址
122 | --- | ---
123 | Win32 | [下载地址](https://raw.githubusercontent.com/xlink-corp/xlink-sdk/master/%E7%A1%AC%E4%BB%B6%E6%A8%A1%E6%8B%9F%E5%99%A8_v3/win32/XlinkDeviceSimulator_v3.zip) |
124 |
125 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
--------------------------------------------------------------------------------
/硬件模拟器_v3/images/datapoint.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器_v3/images/datapoint.png
--------------------------------------------------------------------------------
/硬件模拟器_v3/images/device_info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器_v3/images/device_info.png
--------------------------------------------------------------------------------
/硬件模拟器_v3/images/localapps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器_v3/images/localapps.png
--------------------------------------------------------------------------------
/硬件模拟器_v3/images/mainwindow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器_v3/images/mainwindow.png
--------------------------------------------------------------------------------
/硬件模拟器_v3/images/ota1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器_v3/images/ota1.png
--------------------------------------------------------------------------------
/硬件模拟器_v3/images/ota2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器_v3/images/ota2.png
--------------------------------------------------------------------------------
/硬件模拟器_v3/images/ota3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器_v3/images/ota3.png
--------------------------------------------------------------------------------
/硬件模拟器_v3/images/pipe_sync.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器_v3/images/pipe_sync.png
--------------------------------------------------------------------------------
/硬件模拟器_v3/win32/XlinkDeviceSimulator_v3.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/硬件模拟器_v3/win32/XlinkDeviceSimulator_v3.zip
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/1.SDK介绍.md:
--------------------------------------------------------------------------------
1 |
2 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
3 |
4 |
5 | # 嵌入式SDK介绍
6 |
7 | 云智易物联硬件接口主要为传统厂商的产品接入互联网,并能通过APP对产品进行监测、控制和统计等。
8 |
9 | ## 1.主要特点
10 | * 本地设备自动探测和扫描联网;
11 | * 内置云端连接服务,无需额外对接开发;
12 | * 支持内、外网网络自动检测和切换;
13 | * 提供云端固件升级和远程配置、诊断和管理服务;
14 | * 支持设备安全认证和数据加密机制;
15 | * 支持微信Air Kiss、SmartLink和easylink一键配置;
16 | * 支持ARM、x86、x64以及MIPS等不同处理器架构;
17 | * 可移植性强,使用操作简单快捷。
18 |
19 | ## 2.Xlink SDK结构
20 |
21 | 结构图如下:
22 |
23 | 
24 |
25 | ## 3.相关概念说明
26 | ### 3.1集成模式
27 |
28 | 集成模式主要有两种,分别为C语言接口和串口透传模式。
29 |
30 | #### 3.1.1 C语言接口
31 |
32 | C语言接口通常为提供静态库,直接在模组或芯片上开发应用程序,快速通过相应API接口将设备接入到云平台。
33 |
34 | ## 3.1.2 串口透传模式
35 |
36 | 串口透传模式通常为提供Wifi模组或芯片的串口通讯固件,外部MCU通过串口连接到Wifi模组或芯片,通过“设备通讯协议”来完成联网及控制。
37 |
38 | ### 3.2网关和单品模式
39 |
40 | #### 3.2.1 网关模式
41 | 网关模式,由一个网关设备和一个或多个子设备组成的有线或无线局域网,并可通过网关进行管理和控制。
42 |
43 | 
44 |
45 | #### 3.2.2 单品模式
46 | 单品模式,由一个或多个设备直接通过wifi网络连接到路由器组成的无线网络。
47 |
48 | 
49 |
50 |
51 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
52 |
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/2.SDK使用流程.md:
--------------------------------------------------------------------------------
1 |
2 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
3 |
4 |
5 | # 硬件SDK使用流程
6 |
7 | 云智易为智能硬件的通讯固件,提供以下两种接口集成模式,分别为C语言接口集成和串口透传。
8 |
9 | ## 1.C语言接口集成
10 | 使用步骤:
11 |
12 | 1. 首先在平台[http://admin.xlink.cn](http://admin.xlink.cn)上注册一个账号,并创建一个产品,这时可获得产品PID和产品KEY;
13 | * 在平台上所创建的产品上的“设备管理”页面上添加接入设备的MAC地址;
14 | * 然后转到接入设备开发,先选择对应模组的例程;
15 | * 创建和配置结构体(XLINK_USER_CONFIG)变量,详情参考“硬件SDK接口文档”;
16 | * 配置相关参数后,调用“XlinkSystemInit()”接口进行初始化,其中产品PID和产品密匙请使用在平台上对应产品的PID和密匙;
17 | * 打开被扫描发现模式,调用“XlinkPorcess_UDP_Enable()”接口,打开此接口时APP才能通过局域网扫描发现设备;
18 | * 循环执行两个系统后台函数,“XlinkSystemLoop()和XlinkSystemTcpLoop()”API函数;
19 | * 等待设备连接到服务器,连接成功后,在平台“设备管理”界面上对应的设备显示在线状态;
20 | * 设备与平台连接或断开的事件可通过XLINK_USER_CONFIG结构图所注册的status回调函数来判断;
21 | * 设备连接平台成功后,便可收发数据,收发使用接口请参考“硬件SDK接口文档,调试APP工具可以使用“APPDEMO.apk";
22 | * 如果需要使用到数据端点,请参考“数据端点文档”。
23 |
24 | 简易流程如下图所示:
25 |
26 | 
27 |
28 | ## 2.串口透传模式集成
29 |
30 | 使用步骤:
31 |
32 | 1. 首先在平台[http://admin.xlink.cn](http://admin.xlink.cn)上注册一个账号,并创建一个产品,这时可获得产品PID和产品密匙;
33 | * 在平台上所创建的产品上的“设备管理”页面上添加接入设备的MAC地址;
34 | * 将“AT指令透传固件(示例:LPB100,9600,8,N,1)”固件烧写到对应的模组或芯片上,通过AT指令配置设备联网,AT指令说明参考“AT指令V1.3.pdf”;
35 | * 设备连接平台成功后,便可收发数据,收发使用接口请参考“硬件SDK接口文档,调试APP工具可以使用“APPDEMO.apk";
36 | * 如果需要使用到数据端点,请参考“数据端点文档”。
37 |
38 |
39 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
40 |
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/3.硬件SDK接口文档.md:
--------------------------------------------------------------------------------
1 |
2 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
3 |
4 |
5 | # 硬件SDK接口
6 |
7 | 本文主要面向硬件开发者,介绍如何使用Xlink硬件SDK接入云平台或内网通讯。
8 | 关于数据端点说明请查看[数据端点文档](https://github.com/xlink-corp/xlink-sdk/blob/master/设备端开发文档/1.XlinkSDK规范/4.数据端点文档.md)。
9 |
10 | ## 1.接口说明
11 |
12 | ### 1.1初始化接口
13 |
14 | ```
15 | unsigned char XlinkSystemInit(char * product_id, char * product_key, XLINK_USER_CONFIG *config)
16 | ```
17 |
18 | #### 功能:
19 |
20 | 硬件SDK初始化,使用SDK其他接口时,必须先调用此接口。
21 |
22 | #### 参数:
23 |
24 | | 参数 | 说明 |
25 | | --- | --- |
26 | | product_id | 产品ID,长度为32字节,由云智易云平台产生;|
27 | | product_key | 产品KEY,长度为32字节,由云智易云平台产生;|
28 | | config | `XLINK_USER_CONFIG`请参考“`XLINK_USER_CONFIG`”结构体说明。 |
29 |
30 | 说明:关于获取产品ID和KEY可在“http://admin.xlink.cn/”上注册账号,然后添加产品获得。
31 |
32 | #### 返回值:
33 |
34 | | 值 | 说明 |
35 | | --- | --- |
36 | 1 | 成功
37 | 0 | 失败
38 |
39 | ### 1.2查询SDK版本
40 |
41 | ```
42 | char *XlinkSystemVersion(void);
43 | ```
44 |
45 | #### 功能:
46 |
47 | 获取设备SDK的当前版本信息。
48 |
49 | #### 参数:
50 |
51 | | 参数 | 说明 |
52 | | --- | --- |
53 | | none | --- |
54 |
55 | #### 返回值:
56 |
57 | | 值 | 说明 |
58 | | --- | --- |
59 | | char * | SDK版本信息的指针 |
60 |
61 |
62 | ### 1.3设置设备名称
63 |
64 | ```
65 | void XlinkSystemSetDeviceName(char *NameStr);
66 | ```
67 |
68 | #### 功能:
69 |
70 | 设置wifi设备名称,最长16个字符,此名称可在APP扫描发现时显示,默认名称为“xlink_dev”。
71 | 如果设备设置设备名称,每次需要在“XlinkSystemInit”后设置。当APP设置设备名称后,设备本地设置设备名称无效,设备名称永远都是APP设置的名称,直到设备SDK被重置后才能设置。
72 |
73 | #### 参数:
74 |
75 | | 参数 | 说明 |
76 | | --- | --- |
77 | | NameStr | wifi设备名称。|
78 |
79 | #### 返回值:
80 | | 值 | 说明 |
81 | | --- | --- |
82 | | none | --- |
83 |
84 |
85 | ### 1.4设置accesskey
86 |
87 | accesskey说明:
88 | int整形,范围1-999999999,通常用于设备安全订阅认证,APP通过云端订阅设备时候需要知道此key才能订阅,否则不能订阅。此key可以通过APP在内网时设置,或者设备设置。
89 |
90 | ```
91 | void XlinkSetACK(int accesskey);
92 | ```
93 |
94 | #### 功能:
95 |
96 | 设置设备accesskey,当accesskey没被设置时才有效。
97 |
98 | #### 参数:
99 |
100 | | 参数 | 说明 |
101 | | --- | --- |
102 | | accesskey | 认证秘钥 |
103 |
104 | #### 返回值:
105 |
106 | | 值 | 说明 |
107 | | --- | --- |
108 | | none | --- |
109 |
110 | ### 1.5读取accesskey
111 |
112 | accesskey说明:
113 | int整形,范围1-999999999,通常用于设备安全订阅认证,APP通过云端订阅设备时候需要知道此key才能订阅,否则不能订阅。此key可以通过APP在内网时设置,或者设备设置。
114 |
115 | ```
116 | int XlinkGetACK(void);
117 | ```
118 |
119 | #### 功能:
120 |
121 | 读取accesskey,需要在SDK初始后读取。
122 |
123 | #### 参数:
124 |
125 | | 参数 | 说明 |
126 | | --- | --- |
127 | | none | --- |
128 |
129 | #### 返回值:
130 |
131 | | 值 | 说明 |
132 | | --- | --- |
133 | | int | 认证秘钥 |
134 |
135 | ### 1.6开启扫描发现模式
136 |
137 | ```
138 | XLINK_FUNC void XlinkPorcess_UDP_Enable(void);
139 | ```
140 |
141 | #### 功能:
142 |
143 | 此API需要在SDK初始化后调用,调用此函数,手机APP通过本地UDP扫描发现此设备,否则不能被发现。SDK默认扫描发现状态为关闭。
144 |
145 | #### 参数:
146 |
147 | | 参数 | 说明 |
148 | | --- | --- |
149 | | none | --- |
150 |
151 | #### 返回值:
152 |
153 | | 值 | 说明 |
154 | | --- | --- |
155 | | none | --- |
156 |
157 | ### 1.7关闭扫描发现模式
158 |
159 | ```
160 | XLINK_FUNC void XlinkPorcess_UDP_Disable(void);
161 | ```
162 |
163 | #### 功能:
164 |
165 | 此API需要在SDK初始化后调用,调用此函数,调用后APP不能通过本地UDP扫描发现此设备。
166 |
167 | #### 参数:
168 |
169 | | 参数 | 说明 |
170 | | --- | --- |
171 | | none | --- |
172 |
173 | #### 返回值:
174 |
175 | | 值 | 说明 |
176 | | --- | --- |
177 | | none | --- |
178 |
179 |
180 | ### 1.8设置SDK WIFI连接状态
181 |
182 | ```
183 | void XlinkSystemSetWifiStatus(unsigned char status);
184 | ```
185 |
186 | #### 功能:
187 |
188 | 设置wifi状态值,将wifi 状态设置为1后,SDK才能连接服务器,否则不连接服务器;
189 | 此函数通常在设备wifi连接或断开路由器后调用。
190 |
191 | #### 参数:
192 |
193 | | 参数 | 说明 |
194 | | --- | --- |
195 | | status | 1表示可连接服务器,0不可连接服务器。|
196 |
197 | #### 返回值:
198 | | 值 | 说明 |
199 | | --- | --- |
200 | | none | |
201 |
202 | ### 1.9系统主循环函数
203 |
204 | ```
205 | void XlinkSystemLoop(xsdk_time_t c_time, x_int32 timeout_ms);
206 | ```
207 |
208 | #### 功能:
209 |
210 | 系统主循环,需要在任务中循环调用此函数。
211 |
212 | #### 参数:
213 |
214 | | 参数 | 说明 |
215 | | --- | --- |
216 | | c_time | 当前系统时间 |
217 | | timeout_ms | 超时时间,单位毫秒 |
218 |
219 | #### 返回值:
220 | | 值 | 说明 |
221 | | --- | --- |
222 | | none | --- |
223 |
224 | ### 1.10公网连接函数
225 |
226 | ```
227 | int XlinkSystemTcpLoop(void);
228 | ```
229 |
230 | #### 功能:
231 |
232 | 需要在任务中循环调用此函数,主要功能:连接公网服务器、维护公网服务器连接和断线重连等。
233 |
234 | #### 参数:
235 |
236 | | 参数 | 说明 |
237 | | --- | --- |
238 | | none | --- |
239 |
240 | #### 返回值:
241 |
242 | | 值 | 说明 |
243 | | --- | --- |
244 | | none | --- |
245 |
246 | ### 1.11通过公网发送数据给指定APP
247 |
248 | ```
249 | x_int32 XlinkSendTcpPipe(unsigned char * data, unsigned int datalen, x_uint32 AppID);
250 | ```
251 |
252 | #### 功能:
253 |
254 | 此函数功能为:向指定ID标号为APPID的APP发送发送TCP数据,只有指定AppID的APP才收到此数据。AppID需要先从“XLINK_USER_CONFIG”结构体“tcp_pipe”回调接收函数获得。
255 |
256 | #### 参数:
257 |
258 | | 参数 | 说明 |
259 | | --- | --- |
260 | | data | 发送的数据 |
261 | | Datalen | 数据长度(SDK单次发送数据数据不能超过1000字节) |
262 |
263 | #### 返回值:
264 |
265 | | 值 | 说明 |
266 | | --- | --- |
267 | | ==0 | 发送失败 |
268 | | >0 | 成功发送 |
269 |
270 | ###1.12通过公网发送数据给关注此设备的APP
271 |
272 | ```
273 | x_int32 XlinkSendTcpPipe2(unsigned char * data, unsigned int datalen);
274 | ```
275 |
276 | #### 功能:
277 |
278 | 此函数功能为:向服务器发送数据,此数据将发送到关注了此设备的所有APP上。
279 |
280 | #### 参数:
281 |
282 | | 参数 | 说明 |
283 | | --- | --- |
284 | | data | 发送的数据;|
285 | | datalen | 数据长度(SDK单次发送数据数据不能超过1000字节)|
286 |
287 | #### 返回值:
288 |
289 | | 值 | 说明 |
290 | | --- | --- |
291 | | ==0 | 发送失败 |
292 | | >0 | 成功发送 |
293 |
294 | ### 1.13发送数据给本地连接的APP
295 |
296 | ```
297 | x_int32 XlinkSendUdpPipe(unsigned char *data, unsigned int datalen,xlink_addr *addr);
298 | ```
299 |
300 | #### 功能:
301 |
302 | 此函数功能为:通过本地UDP连接向指定APP发送数据。
303 |
304 | #### 参数:
305 |
306 | | 参数 | 说明 |
307 | | --- | --- |
308 | | data | 发送的数据 |
309 | | datalen | 数据长度(SDK单次发送数据数据不能超过1000字节) |
310 | | Addr | 指定APP的地址;如果需要发送数据给所有连接了设备的APP,则addr=NULL |
311 |
312 | #### 返回值:
313 |
314 | | 值 | 说明 |
315 | | --- | --- |
316 | | ==0 | 发送失败 |
317 | | >0 | 成功发送 |
318 |
319 |
320 | ### 1.14同步服务器时间
321 |
322 | ```
323 | void XlinkGetServerTime(void);
324 | ```
325 |
326 | #### 功能:
327 |
328 | 向服务器同步时间,SDK的实际将被更新。
329 |
330 | #### 参数:
331 |
332 | | 参数 | 说明 |
333 | | --- | --- |
334 | | none | --- |
335 |
336 | #### 返回值:
337 |
338 | | 值 | 说明 |
339 | | --- | --- |
340 | | none | --- |
341 |
342 | ### 1.15获取本地模糊时间
343 |
344 | ```
345 | int XlinkGetSystemTime(XLINK_SYS_TIME *pTime);
346 | ```
347 |
348 | #### 功能:
349 |
350 | 获取本地的计时时间,时间为北京时间;详情请看“XLINK_SYS_TIME”定义
351 |
352 | #### 参数:
353 |
354 | | 参数 | 说明 |
355 | | --- | --- |
356 | | pTime | 本地时间结构指针,返回本地时间 |
357 |
358 | #### 返回值:
359 |
360 | | 值 | 说明 |
361 | | --- | --- |
362 | | none | --- |
363 |
364 |
365 |
366 | ### 1.16硬件SDK重置
367 |
368 | ```
369 | XLINK_FUNC void XlinkReSetSDK(void);
370 | ```
371 |
372 | #### 功能:
373 |
374 | 清除清空SDK保存任何数据,重置为出厂设置;当设备需要被重置或清空服务器订阅关系时候可使用;重置后,服务器上的设备订阅关系被清空。
375 |
376 | #### 参数:
377 |
378 | | 参数 | 说明 |
379 | | --- | --- |
380 | | none | --- |
381 |
382 | #### 返回值:
383 |
384 | | 值 | 说明 |
385 | | --- | --- |
386 | | none | --- |
387 |
388 |
389 | ## 2.结构体说明
390 |
391 | ### 2.1 `XLINK_USER_CONFIG`
392 |
393 | 结构体定义及说明如下程序清单。
394 |
395 | ```
396 | typedef struct XLINK_USER_CONFIG {
397 | //接收APP通过服务器TCP广播数据的回调函数,默认为NULL;当接收到远程APP数据时调用
398 | void (*tcp_pipe2)(unsigned char * Buffer, unsigned int BufferLen, x_uint8 *opt);
399 | //接收APP通过服务器TCP发送数据的回调函数,默认为NULL;当接收到远程APP数据时调用
400 | void (*tcp_pipe)(unsigned char * Buffer, unsigned int BufferLen, x_uint32 AppID, x_uint8 *opt);
401 | //接收APP通过本地发送UDP数据的回调函数,默认为NULL;当接收到本地APP数据时调用,fromAddr为APP的地址,当设备指定发送给这个APP时,需要记录此地址
402 | void (*udp_pipe)(unsigned char * Buffer, unsigned int BufferLen,xlink_addr *fromAddr);
403 | //SDK 内部写配置回调函数,开发者需要将此数据写入flash,需要120个字节空间
404 | int (*writeConfig)(char *Buffer, unsigned int BufferLen);
405 | //SDK 内部读本地的配置文件,开发者需要读出flash的配置数据
406 | int (*readConfig)(char *Buffer, unsigned int BufferLen);
407 | void (*status)(XLINK_APP_STATUS status); //SDK 系统状态信息回调,详情请看“XLINK_UPGRADE”定义
408 | void (*upgrade)(XLINK_UPGRADE *data); //SDK 收到服务器升级信息回调,详情请看“XLINK_UPGRADE”定义
409 | void (*server_time)(XLINK_SYS_TIME *time_p); //SDK 收到服务器同步时间信息回调,详情请看“XLINK_SYS_TIME”定义
410 | xlink_debug_fn DebugPrintf; //SDK 内部日志输出回调
411 | unsigned char wifi_type; //WiFi类型
412 | unsigned short wifisoftVersion; //WiFi版本
413 | unsigned short endpointVersion; //端点的版本
414 | unsigned char in_internet; //SDK 内部是否使用TCP公网连接
415 | unsigned char mac[6]; //设备的MAC地址
416 | unsigned char pipetype; //硬件协议透传协议选择0:表示普通透传 1:表示透传内容为硬件通讯协议。
417 | unsigned short devicetype; //设备类型
418 | void (*Xlink_SetDataPoint)(unsigned char *data, int datalen); //设置数据端点,详情查看[数据端点文档](https://github.com/xlink-corp/xlink-sdk/blob/master/设备端开发文档/1.XlinkSDK规范/4.数据端点文档.md)。
419 | void (*Xlink_GetAllDataPoint)(unsigned char *data, int *datalen); //获取所有数据端点
420 | } XLINK_USER_CONFIG;
421 | ```
422 |
423 | ### 2.2 `XLINK_APP_STATUS`
424 |
425 | 结构体定义及说明如下程序清单。
426 |
427 | ```
428 | typedef enum XLINK_APP_STATUS {
429 | XLINK_WIFI_STA_PRO_TESTCOMPLETE=0X02,//产测完成,不使用,保留
430 | XLINK_WIFI_STA_CONNECT_SERVER = 0X04, //链接上云服务器
431 | XLINK_WIFI_STA_DISCONNCT_SERVER = 0X08, //与云服务器断开链接
432 | XLINK_WIFI_STA_APP_CONNECT = 0X10, //本地APP连接
433 | XLINK_WIFI_STA_APP_DISCONNECT = 0X20, //本地APP 断开连接
434 | XLINK_WIFI_STA_APP_TIMEOUT = 0X40, //本地APP 超时
435 | XLINK_WIFI_STA_LOGIN_SUCCESS = 0X80, //登录公网服务器成功
436 | } XLINK_APP_STATUS;
437 | ```
438 |
439 | ### 2.3 `XLINK_UPGRADE`
440 |
441 | 结构体定义及说明如下程序清单。
442 |
443 | ```
444 | typedef struct XLINK_UPGRADE_FUN {
445 | unsigned int fileSize;//固件大小
446 | char *checkStr;//固件MD5校验码
447 | unsigned int checkStrLength;//固件MD5校验码长度
448 | char *urlstr;//固件下载链接
449 | unsigned short urlLength;//固件下载链接长度
450 | unsigned char mCheckFlag;//无效,不使用
451 | unsigned char mHardVersion;//无效,不使用
452 | unsigned short mSoftVersion;//当前需要升级的版本
453 | unsigned short mCurrentVersion;//当前软件版本
454 | unsigned char isWifi;//是否为wifi设备
455 | } XLINK_UPGRADE;
456 | ```
457 |
458 | ### 2.4 `XLINK_SYS_TIME`
459 |
460 | 结构体定义及说明如下程序清单。
461 |
462 | ```
463 | typedef struct XLINK_TIME {
464 | unsigned short year;//年
465 | unsigned char mon;//月
466 | unsigned char day;//日
467 | unsigned char week;//周
468 | unsigned char hour;//时
469 | unsigned char min;//分
470 | unsigned char sec;//秒
471 | short zones;//时区
472 | } XLINK_SYS_TIME;
473 | ```
474 |
475 |
476 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
477 |
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/4.数据端点文档.md:
--------------------------------------------------------------------------------
1 |
2 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
3 |
4 |
5 | # 数据端点
6 |
7 | ## 1.概述
8 |
9 | 本文档是面向智能硬件开发者,介绍如何使用Xlink SDK的数据端点,数据端点有强大的功能,具体如下:
10 |
11 | **主要功能特点:**
12 |
13 | * 设备可通过数据端点将设备的运行状态和属性参数映射到平台,方便管理设备;
14 | * 用户这也可以在平台通过数据端点对设备进行控制或配置相关参数;
15 | * 如设备需要存储数据,设备可通过数据端点方式存到平台数据库上,可作为历史查询或者数据统计分析;
16 | * 如设备需要报警并推送到用户,设备可通过数据端点将报警内容上报的平台,平台上设置报警规则和内容;如条件成立,平台将报警的内容通过短信、邮箱或应用内消息推送给用户;这样及时通知用户,避免严重的财产损失。
17 |
18 | 关于SDK接口使用说明请查看[硬件SDK接口文档](https://github.com/xlink-corp/xlink-sdk/blob/master/设备端开发文档/1.XlinkSDK规范/3.硬件SDK接口文档.md)。
19 |
20 | ## 2.数据端点格式描述
21 | ### 2.1单个端点数据格式
22 | 一个设备的数据端点个数最多为200个,每个数据端点由如下格式组成:
23 |
24 | 数据端点索引|数据长度|数据
25 | ---- | ---- | ----
26 | 1字节|2字节|N字节,长度由数据长度决定
27 | 注:数据长度的高字节的高4位表示数据类型,数据长度的高字节的低4位和低字节表示数据长度。
28 |
29 | ### 2.2端点数据类型
30 |
31 | 数据类型定义如下(平台暂时只支持0、1和3的数据类型):
32 |
33 | 数据类型(16进制)|类型(高字节在前)
34 | ---- | ----
35 | 0|Byte或者BOOL
36 | 1|Int16
37 | 2|Unsigned Int16
38 | 3|Int32
39 | 4|Unsigned Int32
40 | 5|Int64
41 | 6|Unsigned Int64
42 | 7|Float(IEEE754标准)
43 | 8|Double(IEEE754标准)
44 | 9|String
45 | A|Binary(二进制数据块)
46 | B-F 保留
47 |
48 | ###2.3一个设备端点数据格式定义
49 |
50 | 一个设备数据端点有200个,其数据端点格式如下:
51 |
52 | 端点0|端点1|端点...|端点199
53 | ---- | ---- | ---- | ----
54 |
55 | ##3.使用流程
56 |
57 | 流程图如下图:
58 | 
59 |
60 | ##4.API接口说明
61 |
62 | ###4.1回调函数
63 |
64 | 初始化SDK时候,在“XLINK_USER_CONFIG”结构体注册如下两个函数,并实现其功能。
65 |
66 | ####4.1.1 Xlink_SetDataPoint
67 |
68 | void (*Xlink_SetDataPoint)(unsigned char *data, int datalen)
69 |
70 | 功能:接收到本地或云端发来的端点数据回调函数
71 |
72 | 参数:
73 |
74 | * data:数据端点数据指针,可连续多个;
75 | * datalen:数据端点数据大小。
76 |
77 | 返回:无
78 |
79 | ####4.1.2 Xlink_GetAllDataPoint
80 |
81 | ```
82 | void (*Xlink_GetAllDataPoint)(unsigned char *data, int *datalen)
83 | ```
84 |
85 | 功能:返回所有端点数据回调函数
86 |
87 | 参数:
88 |
89 | * data:数据端点数据指针,可连续多个;
90 | * datalen:数据端点数据大小。函数回调时,最大数据长度不能超过这个datalen值,将 所有端点数据存储到data里,然后修改datalen长度为data数据长度。
91 |
92 | 返回:无
93 |
94 | ###4.1.3 Xlink_UpdateDataPoint
95 |
96 | ```
97 | Void Xlink_UpdateDataPoint(unsigned char* data, int datalen,unsigned char flag)
98 | ```
99 |
100 | 功能:更新数据函数
101 |
102 | 参数:
103 |
104 | * data:数据端点数据指针,可连续多个端点数据;
105 | * datalen:数据端点数据大小,长度要小于1000字节;
106 | * flag:0表示推送告警,非0表示不推送告警。
107 |
108 | 返回:无
109 |
110 |
111 | 注意:此函数调用需要在wifi连接后使用。
112 |
113 | ###4.2实例
114 |
115 | ####4.2.1定义数据端点变量
116 |
117 | ```
118 | unsigned char index = 0;
119 | int ID;
120 | float temp;
121 | char name [2] = { ‘Y’, ‘W’}
122 | ```
123 |
124 | ####4.2.2更新数据端点数据内容到APP或云端
125 |
126 | ```
127 | //定义发送缓冲区数组
128 | unsigned char buf[23];
129 |
130 | //index变量
131 | buf[0] = 0;
132 | buf[1] = 0 << 4;
133 | buf[2] = 1;
134 | buf[3] = index;
135 |
136 | //ID变量
137 | buf[4] = 1;
138 | buf[5] = 3 << 4;
139 | buf[6] = 4;
140 | buf[7] = (ID >> 24) & 0xff;
141 | buf[8] = (ID >> 16) & 0xff;
142 | buf[9] = (ID >> 8) & 0xff;
143 | buf[10] = ID & 0xff;
144 |
145 | //temp变量
146 | buf[11] = 2;
147 | buf[12] = 7 << 4;
148 | buf[13] = 4;
149 | buf[14] = (((unsigned int*)(&temp)) >> 24) & 0xff;
150 | buf[15] = (((unsigned int*)(&temp)) >> 16) & 0xff;
151 | buf[16] = (((unsigned int*)(&temp)) >> 8) & 0xff;
152 | buf[17] = ((unsigned int*)(&temp)) & 0xff;
153 |
154 | //name变量
155 | buf[18] = 3;
156 | buf[19] = 9 << 4;
157 | buf[20] = 2;
158 | buf[21] = name [0];
159 | buf[22] = name [1];
160 | Xlink_UpdateDataPoint(buf, 22,0);
161 | ```
162 |
163 | ####4.2.3“Xlink_GetAllDataPoint”回调函数
164 | ```
165 | void GetAllDataPoint(unsigned char *data, int *datalen) {
166 | if (datalen < 22) {
167 | //数据长度过长返回失败
168 | *datalen = 0;
169 | return;
170 | }
171 |
172 | //index变量
173 | data[0] = 0;
174 | data[1] = 0 << 4;
175 | data[2] = 1;
176 | data[3] = index;
177 |
178 | //ID变量
179 | data[4] = 1;
180 | data[5] = 3 << 4;
181 | data[6] = 4;
182 | data[7] = (ID >> 24) & 0xff;
183 | data[8] = (ID >> 16) & 0xff;
184 | data[9] = (ID >> 8) & 0xff;
185 | data[10] = ID & 0xff;
186 |
187 | //temp变量
188 | data[11] = 2;
189 | data[12] = 7 << 4;
190 | data[13] = 4;
191 | data[14] = (((unsigned int*)(&temp)) >> 24) & 0xff;
192 | data[15] = (((unsigned int*)(&temp)) >> 16) & 0xff;
193 | data[16] = (((unsigned int*)(&temp)) >> 8) & 0xff;
194 | data[17] = ((unsigned int*)(&temp)) & 0xff;
195 |
196 | //name变量
197 | data[18] = 3;
198 | data[19] = 9 << 4;
199 | data[20] = 2;
200 | data[21] = name [0];
201 | data[22] = name [1];
202 |
203 | //需要改变数据长度,这个长度为实际返回的数据长度
204 | *datalen = 23;
205 | }
206 | ```
207 | ####4.2.4“Xlink_SetDataPoint”回调函数
208 |
209 | ```
210 | void Xlink_SetDataPoint(unsigned char *data, int datalen)
211 | {
212 | //根据数据端点数据协议解析数据内容,字符串长度为2字节
213 | int len = datalen, i = 0;
214 | unsigned int tem;
215 | while(datalen > 0 ) {
216 | switch((data[i + 1] >> 4) & 0x0f) {
217 | case 0://index
218 | index = data[i + 3];
219 | len -= 4;
220 | i += 4;
221 | break;
222 | case 3://ID
223 | ID = (data[i + 3]) << 24;
224 | ID |= (data[i + 4]) << 16;
225 | ID |= (data[i + 5]) << 8;
226 | ID |= data[i + 6];
227 | len -= 7;
228 | i += 7;
229 | break;
230 | case 7://temp
231 | tem = (data[i + 3]) << 24;
232 | tem |= (data[i + 4]) << 16;
233 | tem |= (data[i + 5]) << 8;
234 | tem |= data[i + 6];
235 | temp = *( (float *)(&tem));
236 | len -= 7;
237 | i += 7;
238 | break;
239 | case 9://name
240 | name[0] = data[i + 3];
241 | name[1] = data[i + 3];
242 | len -= 5;
243 | i += 5;
244 | break;
245 | default://其他
246 | break;
247 | }
248 | }
249 | }
250 | ```
251 |
252 |
253 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
254 |
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/README.md:
--------------------------------------------------------------------------------
1 | Copyright©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | ## “1.XlinkSDK规范”目录说明
4 |
5 |
6 | * images:文档中需要用到图片的存放位置;
7 | * SDK及固件:硬件SDK及固件的下载位置;
8 | * 1.SDK介绍.md:SDK的介绍文档;
9 | * 2.SDK的使用流程.md:SDK的接入云的使用的文档,介绍;
10 | * 3.硬件SDK接口文档.md:硬件的SDK的接口使用文档,介绍每个接口如何使用;
11 | * 4.数据端点文档.md:介绍数据端点的协议格式和使用。
12 |
13 |
14 |
15 | Copyright©2016 **云智易**物联云平台(http://www.xlink.cn)
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令V1.3.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令V1.3.pdf
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令透传固件(LPB100,115200,8,N,1).7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令透传固件(LPB100,115200,8,N,1).7z
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令透传固件(LPB100,9600,8,N,1).7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令透传固件(LPB100,9600,8,N,1).7z
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令透传固件(LPB105,115200,8,N,1).7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令透传固件(LPB105,115200,8,N,1).7z
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令透传固件(LPB105,9600,8,N,1).7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令透传固件(LPB105,9600,8,N,1).7z
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令透传固件(LPT100,115200,8,N,1).7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令透传固件(LPT100,115200,8,N,1).7z
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令透传固件(LPT100,9600,8,N,1).7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令透传固件(LPT100,9600,8,N,1).7z
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令透传固件(LPT200,115200,8,N,1).7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令透传固件(LPT200,115200,8,N,1).7z
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令透传固件(LPT200,9600,8,N,1).7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/SDK及固件/AT指令透传固件(LPT200,9600,8,N,1).7z
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/SDK及固件/README.md:
--------------------------------------------------------------------------------
1 | Copyright©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | ## “SDK及固件”目录说明
4 |
5 |
6 | * Xlink SDK V24002(LPB100).7z:云智易设备端SDK;
7 | * Xlink-Demo-V24002(HFLPB100).7z:云智易设备端SDK演示例程;
8 | * Xlink-Demo-AT-V24002(HFLPB100).7z:为AT指令透传例程;
9 | * AT指令透传固件(xxx):云智易透传固件,烧写到对应模组上运行,需要使用AT指令进行配置后,才能使用
10 | * AT指令V1.3.pdf:透传固件AT指令说明文档;
11 | * xlink-demo-V2.apk:云智易SDK APP调试工具。
12 |
13 |
14 |
15 | Copyright©2016 **云智易**物联云平台(http://www.xlink.cn)
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/SDK及固件/Xlink SDK V24002(LPB100).7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/SDK及固件/Xlink SDK V24002(LPB100).7z
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/SDK及固件/Xlink-Demo-AT-V24002(HFLPB100).7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/SDK及固件/Xlink-Demo-AT-V24002(HFLPB100).7z
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/SDK及固件/Xlink-Demo-V24002(HFLPB100).7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/SDK及固件/Xlink-Demo-V24002(HFLPB100).7z
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/SDK及固件/xlink-demo-V2.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/SDK及固件/xlink-demo-V2.apk
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/images/SDK结构.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/images/SDK结构.bmp
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/images/数据端点交互过程.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/images/数据端点交互过程.jpg
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/images/数据端点流程图.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/images/数据端点流程图.bmp
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/images/流程图.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/images/流程图.bmp
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/images/硬件接入流程图.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/images/硬件接入流程图.jpg
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/images/网关模式.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/images/网关模式.bmp
--------------------------------------------------------------------------------
/设备端开发文档/1.XlinkSDK规范/images/设备模式.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xlink-corp/xlink-sdk/ebcf07a2ab2d48e7d41a896ae9baf13fda7a66b3/设备端开发文档/1.XlinkSDK规范/images/设备模式.bmp
--------------------------------------------------------------------------------
/设备端开发文档/3.常见问题和解答.md:
--------------------------------------------------------------------------------
1 |
2 | Copyright©2016 **云智易**物联云平台(http://www.xlink.cn)
3 |
4 |
5 | # 常见问题和解答
6 |
7 | ##1.Xlink SDK
8 | ###1.1设备连接不上平台
9 | 可能有如下几个问题导致:
10 |
11 | * 检测模块是否配置上wifi并且wifi能连接到互联网;
12 | * 检测设备是否配置正确的ProID和ProKey;
13 | * 平台上是否正确添加此设备的MAC地址。
14 |
15 | ###1.2手机APP出现设置Access key失败
16 | 请调用“XlinkReSetSDK()”函数来复位设备,因为设备的Access key被清空,但是平台上没有被清空。
17 |
18 | ###1.3手机APP扫描不到设备
19 | 可能由如下几个问题导致:
20 |
21 | * 没有将手机和设备连接到同一个路由器下;
22 | * 手机APP和设备的ProID不一样;
23 | * 设备没有打开扫描开关,请调用函数“XlinkPorcess_UDP_Enable()"打开。
24 |
25 | ###1.4平台登录不了
26 | 请在谷歌、火狐或者IE11版本的浏览器登录,其他浏览器可能存在兼容性问题,导致登录不了。
27 |
28 | Copyright©2016 **云智易**物联云平台(http://www.xlink.cn)
29 |
--------------------------------------------------------------------------------
/设备端开发文档/README.md:
--------------------------------------------------------------------------------
1 | Copyright©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # 物联平台硬件接口文档
4 |
5 |
6 | ## 总概
7 |
8 | * 智易硬件SDK提供各种不同CPU架构的C库,方便快捷将各种硬件设备快速安全地接入到云智易物联平台;
9 | * 提供常用模组的例程示例,加快开发者开发周期;
10 | * 提供透传固件,开发者可不用开发设备接入云平台的固件,便可将设备简单快速联网;
11 | * 支持强大的数据端点,可将设备的运行状态、参数和报警信息映射到平台,方便设备的管理和监控,并能快捷将报警内容通过邮件、短信或应用推送给用户;
12 | * 提供完善的硬件通讯协议,很好地支持各种产品的功能实现。
13 |
14 | ## 硬件SDK开发
15 |
16 | ### 硬件SDK说明
17 |
18 | **主要特点:**
19 |
20 | * 本地设备自动探测和扫描联网;
21 | * 内置云端连接服务,无需额外对接开发;
22 | * 支持内、外网网络自动检测和切换;
23 | * 提供云端固件升级和远程配置、诊断和管理服务;
24 | * 支持设备安全认证和数据加密机制;
25 | * 支持微信Air Kiss、SmartLink和easylink一键配置;
26 | * 支持ARM、x86、x64以及MIPS等不同处理器架构;
27 | * 可移植性强,使用操作简单快捷。
28 |
29 | 详细说明请参考[硬件SDK说明](https://github.com/xlink-corp/xlink-sdk/blob/master/设备端开发文档/1.XlinkSDK规范/1.SDK介绍.md "硬件SDK说明")。
30 |
31 | ### 硬件SDK及下载地址
32 |
33 | 硬件SDK提供了常用的wifi模组SDK以及例程,如:汉枫的LPB100、LPT100和LPT200等,其他模组或者芯片型号可联系我司获得。
34 |
35 | 设备SDK下载地址:[硬件SDK下载](https://github.com/xlink-corp/xlink-sdk/tree/master/设备端开发文档/1.XlinkSDK规范/SDK及固件)。
36 |
37 | ### 硬件SDK接入流程
38 |
39 | 接入流程示意图如下图所示:
40 |
41 | 
42 |
43 | 详情请查看[SDK使用流程](https://github.com/xlink-corp/xlink-sdk/blob/master/设备端开发文档/1.XlinkSDK规范/2.SDK使用流程.md)。
44 |
45 | ### 硬件SDK接口说明
46 |
47 | 主要接口如下:
48 |
49 | 接口名称|接口
50 | ----|----
51 | SDK配置|unsigned char XlinkSystemInit(char * product_id, char * product_key, XLINK_USER_CONFIG *config)
52 | SDK主循环|void XlinkSystemLoop(xsdk_time_t c_time, x_int32 timeout_ms)
53 | 公网连接|int XlinkSystemTcpLoop(void)
54 |
55 | 详情请查看[硬件SDK接口](https://github.com/xlink-corp/xlink-sdk/blob/master/设备端开发文档/1.XlinkSDK规范/3.硬件SDK接口文档.md)。
56 |
57 | ### 数据端点使用说明
58 |
59 | 数据端点有强大的功能,主要功能:可映射设备运行状态到平台,可通过数据端点设置设备参数或控制设备,设备可通过数据端点将需要存储的数据存储到服务器,设备也可将需要报警的信息通过数据端点推送到用户手上。
60 |
61 | 主要流程如下图:
62 |
63 | 
64 |
65 | 数据端点的数据格式、支持的数据类型以及对应接口的使用请参考[数据端点使用](https://github.com/xlink-corp/xlink-sdk/blob/master/设备端开发文档/1.XlinkSDK规范/4.数据端点文档.md)文档。
66 |
67 | ### 硬件通讯协议规范
68 |
69 | 通常在数据透传上使用,因为对设备的操作需要一个通讯协议来支持,硬件通讯协调提供作为参考或使用。
70 |
71 | 详情请查看[硬件通讯协议规范](https://github.com/xlink-corp/xlink-sdk/blob/master/设备端开发文档/2.设备通讯协议规范.md)。
72 |
73 | ### 常见问题
74 |
75 | SDK在开发使用中遇到常见的问题,可参看[常见问题和解答](https://github.com/xlink-corp/xlink-sdk/blob/master/设备端开发文档/3.常见问题和解答.md)文档。
76 |
77 |
78 | Copyright©2016 **云智易**物联云平台(http://www.xlink.cn)
--------------------------------------------------------------------------------
/设备端开发文档/设备端REST接口开发文档.md:
--------------------------------------------------------------------------------
1 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
2 |
3 | # 设备端REST接口开发文档
4 |
5 | 云智易平台为设备端提供设备激活、设备获取数据等操作的REST接口,通过调用REST接口,设备无需进行连接云端即可完成简单的操作。
6 |
7 |
8 |
9 | 接入设备端REST接口流程:
10 |
11 | * 【设备激活】:可通过云端激活、也可通过REST接口激活
12 | * 请求【设备登录】REST接口获得具有设备身份的【调用凭证】(Access-Token)
13 | * 通过具有【调用凭证】(Access-Tokon)进行数据的操作
14 |
15 | **注:【调用凭证】(Access-Token)有效时间为2个小时,若设备端需要维持【调用凭证】一直有效,需2个小时内通过REST接口[刷新凭证](#refresh_token)换取新的【调用凭证】。**
16 |
17 |
18 | ## 接口概览
19 |
20 | 1. [设备激活](#device_active)
21 | 2. [设备认证](#device_auth)
22 | 3. [刷新凭证](#refresh_token)
23 | 4. [获取数据端点列表](#datapoint_list)
24 | 5. [XFile文件服务](#xfile)
25 | 6. [错误码说明](#error_code)
26 |
27 |
28 | ## 接口详情
29 |
30 | ### 1. 设备激活
31 |
32 | **Request**
33 |
34 | URL
35 |
36 | POST /v2/device_active
37 |
38 | Header
39 |
40 | Content-Type:application/json
41 |
42 | Content
43 |
44 | {
45 | "mac":"MAC地址",
46 | "mcu_mod":"MCU型号",
47 | "mcu_version":"MCU版本号",
48 | "firmware_mod":"固件型号",
49 | "firmware_version":"固件版本号",
50 | "active_code":"激活码"
51 | }
52 |
53 | 字段 | 是否必须 | 描述
54 | ---- | ---- | ----
55 | mac | 是 | MAC地址
56 | mcu_mod | 是 | MCU型号
57 | mcu_version | 是| MCU版本号
58 | firmware_mod | 是 | 固件型号
59 | firmware_version | 是 | 固件版本号
60 | active_code | 是 | 激活码
61 |
62 | **Response**
63 |
64 | Header
65 |
66 | HTTP/1.1 200 OK
67 |
68 | Content
69 |
70 | {
71 | "device_id":"设备ID",
72 | "authorize_code":"认证码"
73 | }
74 |
75 | ### 2. 设备认证
76 |
77 | **Request**
78 | URL
79 |
80 | POST /v2/device_login
81 |
82 | Header
83 |
84 | Content-Type:application/json
85 |
86 | Content
87 |
88 | {
89 | "product_id":"产品ID",
90 | "mac":"MAC地址",
91 | "authorize_code":"认证码"
92 | }
93 |
94 | **Reponse**
95 |
96 | Header
97 |
98 | HTTP/1.1 200 OK
99 |
100 | Content
101 |
102 | {
103 | "access_token": "调用凭证",
104 | "refresh_token": "刷新凭证",
105 | "expire_in":"有效期(秒)",
106 | "device_id": "设备ID"
107 | }
108 |
109 |
110 | ### 3. 刷新凭证
111 |
112 |
113 | **Request**
114 |
115 | URL
116 |
117 | POST /v2/device_refresh
118 |
119 | Header
120 |
121 | Content-Type:application/json
122 | Access-Token:"调用凭证"
123 |
124 | Content
125 |
126 | {
127 | "refresh_token": "刷新凭证"
128 | }
129 |
130 | **Response**
131 |
132 | Header
133 |
134 | HTTP/1.1 200 OK
135 |
136 | Content
137 |
138 | {
139 | "access_token":"新的调用凭证",
140 | "refresh_token":"新的刷新凭证",
141 | "expire_in":"有效期"
142 | }
143 |
144 | ### 4. 获取数据端点列表
145 |
146 | 本接口详情见[文档](https://github.com/xlink-corp/xlink-sdk/blob/master/%E7%89%A9%E8%81%94%E5%B9%B3%E5%8F%B0%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E4%BA%A7%E5%93%81%E4%B8%8E%E8%AE%BE%E5%A4%87%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3.md#listProductDataPoint)
147 |
148 | ### 5. XFile文件服务
149 |
150 | XFfile文件服务XLINK提供的通用文件上传下载服务,终端可以通过上传文件得到一个文件下载地址。
151 |
152 | 详情文档见[XFile服务](https://github.com/xlink-corp/xlink-sdk/blob/master/%E5%BA%94%E7%94%A8%E7%AB%AF%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/%E5%BA%94%E7%94%A8%E7%AB%AFRESTful%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/XFile%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3.md)
153 |
154 |
155 |
156 | ### 6. 错误码说明***
157 |
158 | 详情请见[文档](https://github.com/xlink-corp/xlink-sdk/blob/master/%E5%BA%94%E7%94%A8%E7%AB%AF%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/%E5%BA%94%E7%94%A8%E7%AB%AFRESTful%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E9%94%99%E8%AF%AF%E7%A0%81%E8%AF%B4%E6%98%8E.md)
159 |
160 | ©2016 **云智易**物联云平台(http://www.xlink.cn)
--------------------------------------------------------------------------------