更新时间:2022-02-24 GMT+08:00

设备绑定

接口功能

设备第一次接入物联网平台时需要进行绑定操作,上层应用通过调用该接口传入设备序列号或者MAC地址以及设备信息来绑定到物联网平台。

在绑定前需要调用绑定配置接口设置绑定服务器IP与端口(IoCM服务器地址与端口,Agent Lite会配置默认端口8943)。

说明:

设备绑定是指设备第一次接入IoT平台的过程,需要开发者先在IoT平台注册直连设备,之后在设备上发起绑定操作,将设备绑定到IoT平台上。如果未在IoT平台注册该设备,则绑定操作会失败,Agent Lite将会等待一段时间继续尝试。

接口描述

1
public static boolean bind(String verifyCode, IotaDeviceInfo deviceInfo);

接口所属类

BindService

参数说明

字段

必选/可选

类型

描述

verifyCode

必选

String

设备绑定验证码。

  • 如果通过管理门户注册设备,则verifyCode填写为设备注册时设置的preSecret(预置密钥)。
  • 如果通过开发中心注册设备,则verifyCode填写为设备注册时设置的nodeId(设备标识)。

deviceInfo

必选

IotaDeviceInfo类说明

设备信息。

接口返回值

返回值

描述

true

成功。

false

失败。

说明:
  • 此返回值是调用接口的同步返回结果,返回true只是说明接口调用成功,并不说明绑定成功,绑定成功需要收到BindService.TOPIC_BINDDEVICE_RSP广播。
  • 当前绑定流程的重试策略为:如果绑定失败,则30秒后继续进行重试,如果重试超过5次(总计尝试超过6次),则返回失败,不再进行重试。如果想要重新发起绑定,需要重启设备。

返回结果

广播名称

广播参数

成员

描述

TOPIC_BINDDEVICE_RSP

IotaMessage对象

(使用intent.getSerializableExtra(BindService.BIND_BROADCAST_MSG_IE_IOTAMSG)方法获取)

BIND_IE_RESULT

绑定结果。

BIND_IE_DEVICEID

平台分配的逻辑设备ID。

BIND_IE_DEVICESECRET

设备接入的鉴权秘钥。

BIND_IE_APPID

开发者应用ID。

BIND_IE_HA_ADDR

HA服务器地址。

BIND_IE_LVS_ADDR

LVS服务器地址。

示例

调用设备绑定接口。

1
BindService.bind(new IotaDeviceInfo("nodeId", "manufacturerId", " Gateway", "model", "protocolType")); 

接收设备绑定响应消息。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
//当设备成功绑定之后,Agent Lite会返回给UI如下几个参数,需要UI进行持久化存储,设备登录前需要提前进行配置 
BroadcastReceiver mBindRsp; 
mBindRsp = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    //Do Something 
    IotaMessage iotaMsg = (IotaMessage)intent.getSerializableExtra(BindService.BIND_BROADCAST_MSG_IE_IOTAMSG); 
    int result = iotaMsg.getUint(BindService.BIND_IE_RESULT, 0); 
    String deviceId = iotaMsg.getString(BindService.BIND_IE_DEVICEID); 
    String Secret = iotaMsg.getString(BindService.BIND_IE_DEVICESECRET); 
    String Appid = iotaMsg.getString(BindService.BIND_IE_APPID); 
    String haAddr = iotaMsg.getString(BindService.BIND_IE_HA_ADDR); 
    String lvsAddr = iotaMsg.getString(BindService.BIND_IE_LVS_ADDR); 
    return;  
    } 
}; 
mLocalBroadcastManager = LocalBroadcastManager.getInstance(this); 
IntentFilter filterBind = new IntentFilter(BindService.TOPIC_BINDDEVICE_RSP); 
mLocalBroadcastManager.registerReceiver(mBindRsp, filterBind);