设备管理

绑定设备

  • 对于WIFI设备,则需要先经过设备配网后,APP拿到配网的回调调用bindDevice接口绑定设备。
  • 对于GPRS设备,则无需以上设备激活的流程,通过扫码或其他方式获取物理Id后调用bindDevice进行绑定即可。建议流程:若设备上有是否连接上AbleCloud云端的指示灯,则可以提示用户在指示灯亮起的时候绑定设备。若无指示灯,则可在用户点击开始绑定之后,建议通过CountDownTimer每隔2s钟绑定一次设备,在连续绑定几次之后再提示用户失败或成功。

注意:调用bindDevice接口时要求设备已经连上云端且当前在线。

普通设备

通过获取到的subdomainID匹配subdomain,然后在成功激活设备后的回调方法中,通过subdomian和物理Id绑定设备。

AC.bindMgr().bindDevice(subDomain, physicalDeviceId, deviceName, new PayloadCallback<ACUserDevice>() {
    @Override
    public void success(ACUserDevice userDevice) {
        //绑定成功后返回设备信息
    }

    @Override
    public void error(ACException e) {
        //网络错误或其他,根据e.getErrorCode()做不同的提示或处理
    }
});

设备无法绑定时,请检查以下问题:

  • 1.设备已经被其他人绑定过了。
  • 2.设备的domain和subdomain信息有误。
  • 3.确保设备已经连上云端,如电源供电是否正常等。(可通过AbleCloud管理控制台中的 设备管理 查看设备是否在线判断已经连上云端)

绑定成功后,通过listDevice 接口可以列出已经绑定的设备列表。

分享设备

  • 第一种分享方式是管理员输入用户的帐号(手机号)直接把设备分享给用户
  • 第二种方式为管理员分享二维码后,用户再通过扫码的形式绑定设备获得设备的使用权。推荐使用第二种分享机制。

||SKIP||

管理员直接分享设备给已注册的普通用户

AC.bindMgr().bindDeviceWithUser(subDomain, deviceId, account, new VoidCallback() {
    @Override
    public void success() {
        //成功分享设备给account用户
    }

    @Override
    public void error(ACException e) {
        //网络错误或其他,根据e.getErrorCode()做不同的提示或处理
    }
});

管理员通过分享设备二维码的形式分享设备

//管理员获取分享码
AC.bindMgr().fetchShareCode(deviceId, timeout, new PayloadCallback<String>() {
    @Override
    public void success(String shareCode) {
         //成功获取分享码
    }

    @Override
    public void error(ACException e) {
         //网络错误或其他,根据e.getErrorCode()做不同的提示或处理
    }
});
//普通用户通过扫分享码绑定设备
bindMgr.bindDeviceWithShareCode(shareCode, new PayloadCallback<ACUserDevice>() {
    @Override
    public void success(ACUserDevice userDevice) {
         //成功绑定管理员分享的设备
    }

    @Override
    public void error(ACException e) {
         //网络错误或其他,根据e.getErrorCode()做不同的提示或处理
    }
});

注:管理员分享的二维码有有效期。默认为一个小时。调用fetchShareCode接口时开发者可以自定义有效时间。若已存在未过期二维码则返回原有二维码并更新timeout时间,若原有二维码已过期则返回新的二维码。

同时还提供了重新生成分享码的接口(原分享码会失效)

AC.bindMgr().refreshShareCode(deviceId, timeout, new PayloadCallback<String>() {
    @Override
    public void success(String shareCode) {
         //成功刷新分享码
    }

    @Override
    public void error(ACException e) {
         //网络错误或其他,根据e.getErrorCode()做不同的提示或处理
    }
});

相关注意事项如下:

  1. 设备的逻辑ID可以通过调用listDevice接口获取.
  2. 如果获取失败, 请检查子域设备逻辑ID是否在正确.
  3. 该接口只有设备管理员才可以调用.
  4. 建议开发者将分享码做成二维码, 然后让其他用户通过扫码绑定

解绑设备

||SKIP||

管理员或普通用户解绑设备

bindMgr.unbindDevice(subDomain, deviceId, new VoidCallback() {
    @Override
    public void success() {
        //解绑成功
    }

    @Override
    public void error(ACException e) {
        //网络错误或其他,根据e.getErrorCode()做不同的提示或处理
    }
});

注意:如果是管理员解绑设备,那么其他绑定该设备的普通成员也会失去该设备的使用权。

管理员取消其他普通成员对该设备的控制权

bindMgr.unbindDeviceWithUser(subDomain, userId, deviceId, new VoidCallback() {
    @Override
    public void success() {
        //解绑成功
    }

    @Override
    public void error(ACException e) {
        //网络错误或其他,根据e.getErrorCode()做不同的提示或处理
    }
});