配网开发指南
更新时间:2018-09-03 18:00:37
本节将会介绍以下类型网络设备的配网开发、以及设备连接到飞燕平台后如何进行设备绑定:
WiFi设备
Zigbee设备
WiFi 设备配网界面开发
本文提供了两种配网的开发方式:
使用Native开发配网界面
调用平台提供的配网插件
1. 使用Native开发配网界面
配网方案介绍
配网方案介绍参见:WiFi 配网方案介绍。
接口文档
Android:Android 配网
iOS:iOS 配网
开发最佳实践
2. 调用平台提供的配网插件
配合人机交互-配网引导,手动填写配网流程中的提示问题和图片。以下是如何使用调用配网插件的介绍:
插件url: "link://router/connectConfig"
插件入参:
属性 | 说明 | 类型 | 必选 | 默认值 |
---|---|---|---|---|
productKey | 产品的唯一标识符。必填 | String | 是 | 无 |
deviceName | 同一个产品下, 设备的唯一标示符。本地发现设备进入配网、GPRS设备扫码配网需要用到此参数 | String | 否 | 无 |
token | 设备令牌,用于绑定设备时鉴权用。本地发现已配网设备需要使用 | String | 否 | 无 |
addDeviceFrom | 标识该设备是由路由器发现的或者零配设备发现的待配设备。调用本地发现接口的时候,会返回该值,启动配网的时候透传过来即可。 零配,请填写: 'ZERO_DEVICE' 路由器配网,请填写: 'ROUTER' |
String | 否 | 无 |
出参,退出配网流程
属性 | 说明 | 类型 | 必选 | 默认值 |
---|---|---|---|---|
productKey | String | 是 | 无 | |
deviceName | String | 是 | 无 |
代码示例
Android代码示例:
// 启动插件
Bundle bundle = new Bundle();
bundle.putString("productKey", pk);
Router.getInstance().toUrlForResult(activity, "link://router/connectConfig",{your_request_code}, bundle);
// 接收配网结果
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
...
if (REQUEST_CODE_PRODUCT_ADD == requestCode) {
if (Activity.RESULT_OK != resultCode) {
// 配网失败
return;
}
String productKey = data.getStringExtra("productKey");
String deviceName = data.getStringExtra("deviceName");
// 配网成功
}
}
iOS代码示例:
NSMutableDictionary *options = [NSMutableDictionary dictionary];
options[@"productKey"] = device.productKey;
options[@"deviceName"] = device.deviceName;
options[@"token"] = device.token;
options[@"groupId"] = groupId;
options[@"addDeviceFrom"] = device.addDeviceFrom;
IMSRouterCallback block = ^(NSError *error, NSDictionary *info) {
[self.navigationController popToViewController:self animated:YES];
if (error) {
// 处理错误信息
} else if (info && [info count] > 0) {
// 配网成功
} else {
// 配网正常退出...
}
};
options[AKRouterCompletionHandlerKey] = block;
NSURL *url = [NSURL URLWithString:@"link://router/connectConfig"];
[[IMSRouterService sharedService] openURL:url options:options completionHandler:^(BOOL success) {
if (!success) {
// 进入配网插件失败
}
}];
Zigbee设备配网界面开发
Zigbee设备的配网指的是将Zigbee设备连接到某个Zigbee网关的过程,zigbee的配网流程为:
过程说明
- 如何指定网关的IoTID:开发者可以根据用户绑定的设备去拉取用户绑定的zigbee网关设备,并让用户从中选择希望接入Zigbee设备的网关,从而明确网关的IoTID。
拉取用户已绑定设备列表的接口为:/uc/listBindingByAccount
注:安卓系统调用接口的方式参见 Andriod API通道使用说明,iOS系统调用接口的方式参见 iOS API通道使用说明。
- .指定zigbee设备的PK:开发者可以通过扫码方式获取设备的PK,或者通过列出zigbee产品列表让用户选择的方式获知zigbee设备的PK
- 3.由于不同的zigbee设备的“配对”按钮所在的位置与外观都不同,厂家会将对应Zigbee设备的“配对”按键的指示图片放在飞燕平台上,开发者可以通过待配网Zigbee设备的PK去飞燕平台拉取设备的配网引导页面,显示给用户让用户得知如何启动Zigbee设备的配网。
获取产品配网引导页面的接口为:/awss/enrollee/guide/get
- 4.调用云端接口让网关进入允许添加设备状态,并等待来自云端的配网结果。
设置网关允许添加设备的接口为:/thing/gateway/permit
等待配网结果的topic为:“/thing/topo/add/status”。安卓系统的长连通道从topic接收消息的使用方法参见
Andriod长连接通道使用说明,iOS系统的长连通道从topic接收消息的使用方法参见 iOS长连接通道使用说明
- 将接收到的配网结果向用户显示即可
以太网设备开发
对于接入设备端SDK的以太网设备,配网SDK提供以太网设备的发现和获取绑定 token 的能力。
1. 以太网设备发现
以太网设备的发现依赖配网SDK来实现,具体使用方法如下:
Android端:配网SDK 以太网设备发现;
iOS端:配网SDK 以太网设备发现;
2. 以太网设备绑定
以太网设备的绑定包含两个过程:获取绑定 token;调用绑定接口。
2.1 获取以太网设备绑定 token
以太网设备获取 token 和 WiFi 设备获取绑定 token 的逻辑是一致的。
Android端:配网SDK 以太网设备获取绑定 token;
iOS端:配网SDK 以太网设备获取绑定 token;
2.2 以太网设备绑定
以太网设备绑定和 WiFi 设备的绑定调用流程是一致的。具体接口服务请参考:以太网设备绑定;
绑定设备
绑定开发过程
API
Android获取设备token代码示例:
LocalDeviceMgr.getInstance().getDeviceToken(productKey, deviceName, 60*1000, new IOnDeviceTokenGetListener() {
@Override
public void onSuccess(String token) {
// 拿到绑定需要的token
//TODO 用户根据具体业务场景调用
}
@Override
public void onFail(String reason) {
}
});
iOS获取设备token代码示例:
[[IMLLocalDeviceMgr sharedMgr] getDeviceToken:self.productKey deviceName:self.deviceName timeout:60 resultBlock:^(NSString *token, BOOL boolSuccess) {
if (token && boolSuccess) {
// 获取token成功
} else {
// 获取token失败
}
}];
设备绑定请查看 配网服务
子设备配网
需添加长连接通道 SDK,不然配网过程会报错。
iOS-长连接通道
https://yuque.antfin-inc.com/homelink/guide/mobile-ios-sdk-channel
安卓-长连接通道
https://yuque.antfin-inc.com/homelink/guide/mobile-android-sdk-channel