├── .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 | ![](http://i.imgur.com/pYdAaZN.png) 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 | ![](./image/diao_yong_ping_zheng.jpg) 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 | ![](http://i.imgur.com/iyf1z0Y.jpg) 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 | ![设备直连微信硬件云通道](http://iot.weixin.qq.com/wiki/static/image/new-2-2_0.png) 16 | 17 | ![设备商云连接微信硬件云通道](http://iot.weixin.qq.com/wiki/static/image/new-2-2_1.png) 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 | ![](img/运行原理1.jpg)![](img/运行原理2.jpg) 45 | 46 | ## 二、为什么要用硬件模拟器? 47 | 硬件模拟器可以模拟真实智能设备与云端及APP的通讯。无需为了开发App应用程序而购买硬件产品。你可以使设备模拟器来测试App和模拟设备之间的通信。 减少因硬件开发周期问题导致的App开发及设备对接问题。 缩短开发周期,提高App开发效率。 48 | 49 | ## 三、如何使用? ## 50 | 51 | ![](img/流程图.jpg) 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 | ![](img/添加产品.png) 64 | 65 | #### 3.1.3 添加设备 #### 66 | 1. 在企业管理后台左侧产品列表中点击上一步添加的产品。 67 | 2. 切换到【设备管理】标签,点击【添加设备】按钮,输入设备MAC地址,MAC地址在后续步骤中需要使用。 68 | 69 | ![](img/添加设备.png) 70 | #### 3.1.4 设置数据端点 #### 71 | 1. 点击企业管理后台左侧上一步添加的产品列表。 72 | 2. 在右边子页面中点击【概览】可以查看产品ID(PID)和产品密钥(PKEY),产品ID和产品密匙在后续步骤中需要使用。 73 | 3. 切换到【数据端点】标签,点击【添加数据端点】按钮,根据设备属性进行数据端点的添加。 74 | 75 | ![](img/数据端点.png) 76 | 77 | ### 3.2 硬件模拟器 ### 78 | #### 3.2.1 硬件模拟器下载与安装 #### 79 | 1. 硬件模拟器下载地址: 80 | 2. 下载解压后,点击【XLINKDeviceEMU.EXE】即可运行硬件模拟器。注意:安装文件中的配置文件不需要改动。 81 | 82 | ![](img/安装.png) 83 | #### 3.2.2 硬件模拟器启动与断开 #### 84 | 1. 点击硬件模拟器图标,进入硬件模拟器主页。设备未启动时,【数据端点】的【设置端点值】按钮与【透传模式】的【发送】按钮不可点击。 85 | ![](img/主页.png) 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 | ![](img/透传模式输入.png) 107 | #### 3.2.5 数据端点模式 #### 108 | 数据端点使用云智易模板化的通讯协议,平台的很多SaaS功能需要结合数据端点来使用,比如报警推送,数据存储,设备快照。数据端点也可以被当做普通的控制协议来使用。 109 | 110 | 1. 设备启动之后,点击硬件模拟器主页中【数据端点】按钮。 111 | 2. 在数据端点列表中选择需要设置的数据端点。 112 | 3. 在数据端点输入框输入需要设置的数据。 113 | 4. 点击【设置端点值】按钮,模拟设备主动上报数据端点所设置的信息,设置的数据端点信息会同步发送到所有连接的手机APP和企业管理后台。并且日志窗口中可以查看到操作日志。 114 | 115 | ![](img/数据端点值.png) 116 | #### 3.2.6 重置设备 #### 117 | 重置设备会清除设备本地存储的deivce Id,device Key,AccessKey,并且会清除所有的订阅关系, 恢复到设备的出厂状态下。 操作步骤如下: 118 | 119 | 1. 断开设备后,可点击【重置设备】按钮。 120 | 2. deivce Id,device Key,AccessKey会自动变为初始状态。 121 | 注:当设备处于连接状态时,【重置设备】按钮不可点击。 122 | 123 | ![](img/重置设备.png) 124 | 125 | #### 3.2.7 断线重连 #### 126 | 断线重连功能主要用于网络断开时,模拟器自动重新连接服务器。程序默认开启,可以点击【断线重连】复选框取消断线重连功能。 127 | 128 | 129 | ![](img/断线重连.png) 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程序,弹出程序主界面:![](images/mainwindow.png) 63 | 64 | ### 4. 使用 65 | 66 | * 设备模拟器分为4大区域:Device info、Local connect Apps、Data以及Log output: 67 | ![](images/device_info.png) 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,会在这里显示,如图:![](images/localapps.png) 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 | * 在管理台如果配置了该产品的数据端点列表,那么模拟器在激活和连接到云端以后,会自动去获取该产品的数据端点列表,如图:![](images/datapoint.png) 96 | * 双击某个条目,在下方的输入区域输入数据,点击Set value,便可设置该数据端点,同时模拟器会在内网和云端通知该数据端点的变化,内网APP和云端都会收到该消息; 97 | * 如果APP和云端对该设备的数据端点进行了设置,界面上的条目也会产生相应的变化; 98 | * **PIPE SYNC:** 99 | * 用来显示设备接收到的云端透传数据以及局域网内的透传数据,如图:![](images/pipe_sync.png) 100 | * 在下方的输入框输入内容,并且点击Send,也可以进行透传数据的发送, **注意:该版本的模拟器暂时只支持PIPE SYNC,也就是透传数据的广播发送,暂时还不支持针对某个APP的透传数据的发送。** 101 | * 在发送透传数据的时候,模拟器支持通过内网发送透传数据( **选中Local data** ),也支持用户输入16进制数据进行发送( **选中Hex data** ); 102 | * **OTA** 103 | * OTA区域用来显示设备模拟器从云端获取到的OTA信息,以及模拟升级完成升级任务,并且上报升级结果。 104 | * 设备模拟器上线后,若云端有针对该设备的升级信息,模拟器会收到云端的推送消息,并且显示在OTA的Tab中(且Tab名会变成 **OTA(!)** ),如图:![](images/ota1.png) 105 | * 进入OTA Tab,可以看到OTA的相关信息,包括固件文件下载地址,hash值,以及相关参数,如图:![](images/ota2.png)用户可以点击 **"Update Complete"** 按钮,模拟设备升级后的动作,平台会收到设备升级完成消息,并且更新云端的设备版本信息。 106 | * 完成升级后界面的变化:![](images/ota3.png)若通讯正常,模拟器再次上线,将不会再收到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 | ![](https://raw.githubusercontent.com/xlink-corp/xlink-sdk/master/设备端开发文档/1.XlinkSDK规范/images/SDK结构.bmp) 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 | ![](https://raw.githubusercontent.com/xlink-corp/xlink-sdk/master/设备端开发文档/1.XlinkSDK规范/images/网关模式.bmp) 44 | 45 | #### 3.2.2 单品模式 46 | 单品模式,由一个或多个设备直接通过wifi网络连接到路由器组成的无线网络。 47 | 48 | ![](https://raw.githubusercontent.com/xlink-corp/xlink-sdk/master/设备端开发文档/1.XlinkSDK规范/images/设备模式.bmp) 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 | ![](https://raw.githubusercontent.com/xlink-corp/xlink-sdk/master/设备端开发文档/1.XlinkSDK规范/images/流程图.bmp) 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 | ![](https://raw.githubusercontent.com/xlink-corp/xlink-sdk/master/设备端开发文档/1.XlinkSDK规范/images/数据端点流程图.bmp) 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 | ![](https://raw.githubusercontent.com/xlink-corp/xlink-sdk/master/设备端开发文档/1.XlinkSDK规范/images/硬件接入流程图.jpg) 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 | ![](https://raw.githubusercontent.com/xlink-corp/xlink-sdk/master/设备端开发文档/1.XlinkSDK规范/images/数据端点交互过程.jpg) 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) --------------------------------------------------------------------------------