EXPEEDCLOUD 极动云 | 文档中心

极动云开发者交流群:587692651

平台接入流程(2018年2月22日最新更新)


2018.2.22 ios端swift语言接入说明

1.创建bridging-header 创建一个OC文件,然后点击确定 响应式图片 弹出是否要创建Bridging-Header,点击确定,这样会生成三个文件,其中的一个就是我们要用的CarRental-Bridging-Header.h(名字任意) 然后在bulid setting 里面就这样找到 响应式图片 2.在bridging-header

								

第三方接口

配置信息

1.第三方平台用户在配置页面上填写自己服务器的URL和token,以HTTP开头,用来接收极动云平台的验证信息和推送信息,同时还需选择数据加密方式(明文或者密文)。

2.提交配置信息后,极动云平台会发http get请求到用户填写的URL中,参数包括signature、nonce、timestamp(nonce:随机字符串,timestamp:当前时间戳,signature:签名),第三方平台用户收到后对token、nonce和timestamp进行校验,若确认,就返回nonce,接入生效。

signature = MD5(SHA1(token+nonce+timestamp))

响应式图片

接口说明

1.获取平台token(GET)
URLhttps://api.iot-expeed.com/v1/platform/token?platform_key=xxx&secret_key=yyy
http头部
Request
Responese {
“result_code”:0,
“access_token”:”zzz”,
“expires_in”:7200,
“result_message”:”ok”
}
注意事项该接口每日调用次数不能超过200次
参数说明
标签类型是否必填含义
platform_keyStringY平台识别码
secret_keyStringY密钥
tokenString调用接口凭证
expires_inint凭证有效时间(秒)
result_code/result_messageint0代表成功,对应"result_message"为"ok";
1代表失败,对应"result_message"为"验证失败";
2.设备上下线状态查询(GET)
URLhttps://api.iot-expeed.com/v1/devices/device_status/{device_id}
http头部access_token:xxx; device_key:xxx
Request
Responese {
“result_code”:0,
“device_status”:1,
“result_message”:”ok”
}
注意事项
参数说明
标签类型是否必填含义
tokenStringY调用接口凭证
device_idStringY设备ID
device_keyString
result_code/result_messageint0代表成功,对应"result_message"为"ok";
1 代表token过期,对应"result_message"为"token过期";
2 代表设备不存在,对应"result_message"为"设备不存在";
device_statusint设备状态,0为离线,1为上线;
3.查询设备当前状态(GET)
URLhttps://api.iot-expeed.com/v1/devices/{device_id}/currentDatapoints?id=xxx,yyy
http头部access_token:xxx; device_key=xxx
Request(JSON)
Responese {
"result_code":0;
"result_message":"ok"
"data":{
"xxx":0,
"yyy":2
}
}
注意事项
参数说明
标签类型是否必填含义
access_tokenStringY调用接口凭证
device_idStringY设备ID
device_keyString
idString状态属性名称,查询所有属性填“all”
4.查询设备历史记录(GET)
URLhttps://api.iot-expeed.com/v1/devices/{device_id}/datapoints?id=xxx,yyy&start=xxx&end=xxx&limit=8&cursor=ZZZ&first=0
http头部access_token:xxx; device_key=xxx
Request(JSON)
Responese {
“result_code”:0;
“result_message”:”ok”
“cursor”: 1486958400000,
“data”:[{
“timestamp”:”2017-02-13T12-00-00-000”,
”xxx”:0;
”yyy”:2;
},
{
“timestamp”:”2017-02-13T12-00-01-000”,
”xxx”:2
},

]
}
注意事项
参数说明
标签类型是否必填含义
access_tokenStringY调用接口凭证
device_idStringY设备ID
device_keyStringY
idStringN要查询的数据点名,多个查询以“,”隔开,不传则默认传该设备下所有数据点
startStringN起始时间,传时间格式,例2017-02-13T12-00-00-000;start与end必须成对出现
endStringN截止时间,传时间格式,例2017-02-13T12-00-00-000;start与end必须成对出现
firstintN0表示按最近时间排序,1表示按最早时间排序,默认不填为0;
limitintN限定本次请求最多返回的数据点的数量,取值1-6000,不传则默认查询100;
cursorlongN指定本次请求继续从cursor位置开始提取数据
cursorlongN指定本次请求继续从cursor位置开始提取数据
result_code/result_messageint/String0代表成功,对应“result_message”为”ok”;
1 代表token过期,对应“result_message”为“token过期”;
2 代表设备不存在,对应“result_message”为“设备不存在”;
3 代表查询参数非法,对应”result_message”为“查询参数非法”;
5.设备上下线通知(POST)
URL用户注册URL
http头部
Request(JSON){ “msg_type”:”1”, “device_id”:xxx, “device_key”:xxx, “device_sn”:xxx, “device_status”:0 }
Responese { “result_code”:0, “result_msg”:”ok” }
参数说明
标签类型是否必填含义
msg_typeStringY1为设备上下线通知;2为设备数据上送通知;3为设置信息返回通知
device_idStringY设备ID
device_statusString设备状态,0为上线,1为离线;
device_snString设备SN
result_codeString0代表成功;...
result_messageString返回信息;
6.设备数据上送通知(POST)
URL用户注册URL
http头部
Request(JSON){ “device_id”:xxx “device_key”:xxx “msg_type”:”2” data:[{ “timestamp”:”2017-02-13T12-00-00-000”, “value1”:xx, “value2”:yy … }, { “timestamp”:”2017-02-13T12-00-00-000”, “value1”:xx, “value2”:yy … }, .. ] }
Responese { “result_code”:0, “result_message”:”ok” }
参数说明
标签类型是否必填含义
msg_typeStringY1为设备上下线通知;2为设备数据上送通知;3为设置信息返回通知
device_idStringY设备ID
dataJSON数组具体数据
result_messageString返回信息;
7.应用端发送设置信息(POST)
URLhttps://api.iot-expeed.com/v1/devices/{device_id}/device_setting
http头部access_token:xxx; device_key=xxx
Request(JSON){ “temp”:xxx; “switch”:xxx; }
Responese { “result_code”:0, “result_message”:”ok”, “message_id”:xxxxx }
参数说明
标签类型是否必填含义
tokenStringY调用接口凭证
device_idStringY设备ID
device_keyStringY
dataY设置信息
result_code/result_messageint/String0代表成功,对应“result_message”为”ok”; 1 代表token过期,对应“result_message”为“token过期”; 2 代表设备不存在,对应“result_message”为“设备不存在”; 3 代表设备不在线,对应“result_message”为“设备不在线” …
message_idString用于标识设置返回信息设置信息
8.服务器返回设置信息(POST)
URL用户注册URL
http头部access_token:xxx; device_key=xxx
Request(JSON){ “msg_type”:3; “message_id”: xxx “device_id”:xxx “set_result”:0 }
Responese { “result_code”:0; “result_message”:”ok” }
参数说明
标签类型是否必填含义
msg_typeStringY1为设备上下线通知;2为设备数据上送通知;3为设置信息返回通知
message_idStringY用于标识设置返回信息
device_idStringY设备ID
set_resultStringY0为设置成功;1为设置失败;
result_codeintY0代表成功;…
result_messageStringY返回信息;

错误代码

错误代码(resul_code)错误信息(result_message)注释
0ok成功
1token过期token过期
2设备不存在设备不存在
3Device_key不存在
4URL参数非法
5BODY参数非法

导入及配置

Step1:首先在您的工程文件中导入IOS_SDK_Expeed.framework,直接拖入工程即可。

Step2:选中Target->General->Embedded Binaries 加入framework

响应式图片

MOB配置及sdk说明

MOB配置

项目中的info.plist文件中添加键值对,键分别为 MOBAppKey 和 MOBAppSecret,值为步骤一申请的appkey和appSecret()

响应式图片

SDK说明

SDK的接口都在ITASDK.h头文件里,您可以在文件中找到所有方法。下面详细介绍如何使用SDK。

PS:以下为平台服务的所有功能接口,返回值(int)默认为改条接口的流水号 在回调内部也会返回该条回调的流水号 两者保持一致 用与收发匹配。若为负数则为发送错误。

>=0流水号
<0发送错误

NSError介绍

NSInteger _code错误码
NSString *_domain错误信息
NSDictionary *_userInfo详细内容 一般内容为serialNumber 流水号

部分接口

*完整接口请于下载中心下载接口文档

1.获取示例对象
+ (ITASDK *)sharedInstance;
ITASDK *sdk = [ITASDK sharedInstance];
2.系统回调方法监听
void (^systemMessageCallback)(SYS_CALLBACK);
[ITASDK sharedInstance].systemMessageCallback = ^(SYS_CALLBACK msg)
    {
        if (msg == MUTI_LOGIN) {
        }
        else if (msg == LINK_DISCONNECTED) {
        
        }
    };
3.开启服务
-(void)startService:(NSString*)sdk_key
success:(void (^)(void))success
failure:(void (^)(NSError* error))failure;
[[ITASDK sharedInstance]startService:@"key" success:^{
        //开启服务成功
    } failure:^(NSError *error) {
        //开启失败
    }];
4.停止服务
-(void)stopService;
[[ITASDK sharedInstance]itaLogout];
5.注册
-(int)itaRegister:(NSString*)phoneNum
password:(NSString*)password
verifyCode:(NSString*)verifyCode
userZone:(NSString*)userZone
success:(void (^)(NSDictionary *response))success
failure:(void (^)(NSError* error))failure;
[[ITASDK sharedInstance] itaRegister:phoneNum password:password verifyCode:verifyCode userZone:userZone success:^(NSDictionary *response) {
        //成功
        NSString *phoneNum = [response objectForKey:@"phoneNum"];
    } failure:^(NSError *error) {
        //失败信息  error.domain
    }];
6.登录
-(int)itaLogin:(NSString*)phoneNum
password:(NSString*)password
token:(NSData*)token
userZone:(NSString*)userZone
success:(void (^)(NSDictionary *response))success
failure:(void (^)(NSError* error))failure;
[[ITASDK sharedInstance] itaLogin:phoneNum password:password token:[[NSUserDefaults standardUserDefaults] objectForKey:@"deviceToken"] userZone:userZone success:^(NSDictionary *response){
        //成功
        NSString* userID = [response objectForKey:@"user_id"];
    } failure:^(NSError *error) {
        //失败信息  error.domain
    }];
7.登出
-(void)itaLogout;
[[ITASDK sharedInstance]stopService];

JS SDK简介

JSSDK是用来方便企业开发者用户 HTML5 页面接入超级 APP。主要实现的功能有:封装现有的公开的接口,使用户能更方便调用平台开放的公开的接口,并且可以通过平台提供的本地调试服务器包,进行本地的数据接口调试,同时预留调用手机传感器接口,能还用手机传感器做出更丰富的动画效果。

使用指南

1.下载 JSSDK

2.在 index.html 的 head 中导入 JSSDK。


									

3.在需要使用sdk的代码中,直接使用实例对象ITASDK

API简介

1.数据类接口
接口名称列表
获取设备信息:getDeviceInfo
发送控制命令:controlDevice
自定义报文:specialTagMethod
ITASDK.dataSocket(key, body, {
success: function(data){},
error: function(err){}
});
参数:

参数名称参数类型参数值
keystring需要使用的接口列表名
bodyobjectgetDeviceInfo -> [“key”, “key”, ……]
controlDevice -> {"key”: “value”, ……}
specialTagMethod -> {"tag": "0000", "data":{"key":”value”, ……}
回调函数中的 res 结果说明:
{
 success: function(data) {
 //result:{key:value, key:value ……}
 },
 error: function(err) {
 //result:{errorMsg: 错误信息}
 }
}
2.与 APP 交互类接口
从 h5 推出,返回 app 设备列表界面:popView
进入 h5 设置状态栏颜色:setStatusBarColor
显示 app 原生的滚轮插件:showPickView
ITASDK. apiModel (key, body, {
success: function(data){},
error: function(err){}
});
popView 接口无 body 和回调参数
setStatusBarColor 接口无回调参数

参数名称参数类型参数值
keystring需要使用的接口列表名
bodyobjectsetStatusBarColor -> {background_color: "000000", color: "white"}
background_color 为状态栏背景颜色。color 为状态栏文字颜色,只有“white”和“black”这两种值。
注意:请杜绝使用浅色背景加白色文字或者深色背景加黑色文字,会有不好的用户体验
showPickView -> {roll: [[1, 2, 3], ……]}
采用数组嵌套数组的形式,内部的数组数量代表可选数值数量,最多支持一个 pickview 控件上同时存在三个可选数值
回调函数中的 res 结果说明(仅 showPickView 有返回):
{
 success: function(data) {
 //result: {roll:[“1”, …]}
 },
 error: function(err) {
 //result:{errorMsg: 错误信息}
 }
}
3. 蓝牙监听函数
ITABLE. Receive({
success: function(data){ },
error: function(err){ }
									});
返回的数据:
{
 success: function(data) {
 //result: {key:value,key:value,……}
 },
 error: function(err) {
 //result:“字符串型的错误信息
 }
}
4. 移除蓝牙监听函数
调用方法:ITABLE.remove_Receive();
5.APP 端断开与设备的蓝牙连接
调用方法:ITABLE.close();
6. 清空请求体数据
调用方法:ITABLE.clean();
7. 将数据添加到请求体中
调用方法:ITABLE.append(key, length, value);


参数名称参数类型参数值
keystring字符串型的 key 值
lengthnumber整型的 v 的字节长度
valueString/numberValue 的值
8. 通过蓝牙发送控制数据
ITABLE.send({
success: function(data){},
error: function(err){}
});
返回的数据:
{
 success: function(data) {
 //result: 以平台返回为准
 },
 error: function(err) {
 //result:“字符串型的错误信息
 }
}
9. 通过蓝牙发送查询接口
ITABLE.getData(body, {
success: function(data){},
error: function(err){}
									});

参数名称参数类型参数值
bodyarray[“key1”, “key2”, …]
返回的数据:
{
 success: function(data) {
 //result: {key1:value,key2:value, …}
 },
 error: function(err) {
 //result:“字符串型的错误信息
 }
}

使用指南

1.创建工程及导入SDK(这里分为eclipse以及Android Studio):

1)在eclipse中首先创建一个工程,然后把itacloudframework.jar 拷贝到libs文件夹中如下图所示:

响应式图片

2)将itacloudframework.jar加入到编译路径如图所示:

响应式图片

3)最后将armeabi文件夹拷贝到libs文件夹下即可如下图:

响应式图片

2.Android Studio导入SDK

1)Studio中导入比较方便与eclipse不同Studio使用arr的包如图将arr的包拷贝到libs目录下:

响应式图片

2)然后在Module的build.gradle里面添加依赖即可:

响应式图片

注:Android Studio中也可以添加jar包

在build.gradle中添加如下字段

dependencies {
    compile fileTree(include: ['*.jar'], dir:'libs')
}

或者右键jar如图

响应式图片

点击add As Library 把jar包加入到工程中即可,重新编译一次项目既可完成加载。

3. 配置AndroidManifest.xml

打开您项目的“AndroidManifest.xml”,在其中添加如下的权限:


									

然后添加service:


									

添加App的唯一秘钥需要向平台申请:


									

至此AndroidManifest.xml填写完成。

设备直连sdk使用说明

1.sdk文件组成

目前 SDK 提供的文件主要包括以下几个:

expeed_types.h:SDK 使用到的数据类型、数据结构定义头文件。

expeed _cloudapi.h:SDK 提供给设备应用层调用的 API 接口,包括 SDK 初始化,回调函数注册,发送数据等接口

expeed_porting.h:SDK 使用到的外部函数的原型,开发者需要根据本文件定义的所有函数原型实现相应的函数,并添加到工程中,否则编译链接静态库的时候会报错找不到函数。

libexpeed.a 或者 libexpeed.lib:SDK 静态库文件,需要链接到工程中。

2.sdk线程模型

为了不影响应用层的逻辑,SDK 独立运行在一个逻辑线程,针对不支持线程的系统,SDK 与厂商程序可以运行在同一个线程。

3.初始化启动 SDK

在设备连接上路由器以后,调用 expeed_cloud_init()完成 SDK 初始化,然后在调用 expeed_regist_callbacks()注册相关回调函数,这两个步骤完成以后,开发者就可以通过 expeed_cloud_send_packet ()接口发送数据给服务器。如果运行的环境支持多线程,开发者可以直接开一个线程来调用 expeed_cloud_loop(),该函数的返回值为下一次期望调用 expeed_cloud_loop()的时间值,单位为毫秒(ms)。对于不支持多线程的系统,开发者可以在程序大循环中调用 expeed_cloud_loop(),然后在函数返回后再去处理数据或运行自己的逻辑代码。