设备管理

对于一款新的智能设备, 需要跟某一用户进行绑定, 才能够进行控制, 设备的绑定操作可以分为两步, 设备配网设备绑定. 设备系统需要使用ACBindManager类, 所以需要在项目相关的类的头部添加如下代码:

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

绑定设备

SDK中提供了两种绑定模式, 分别是 通过设备ID绑定通过扫分享码绑定 两种模式. 每一台设备, 拥有两个ID: 物理ID(设备的唯一标识)逻辑ID(云端下发的ID, 类比UID)

通过设备ID进行绑定

完成设备配网之后, 可以拿到设备的Id, 然后调用绑定接口, 将设备和用户添加绑定. 例如(设备ID:18FF18C2CAAD19EF, 设备子域:test, 设备名称:卧室空调):

    [ACBindManager bindDeviceWithSubDomain:@"test" physicalDeviceId:@"18FF18C2CAAD19EF" name:@"卧室空调" callback:^(ACUserDevice *userDevice, NSError *error) {
        if (!error) {
            //TODO...
        }
    }];

相关注意事项如下:

  1. 请在绑定设备之前确认设备以及配网成功, 成功连接到云端, 否则可能会反馈设备不存在, 设备不在线等错误.
  2. 设备的ID可以通过多种手段获取, 包括但不限于配网获取, 设备实体上扫码获取, 设备显示屏上展示等等
  3. 如果绑定失败, 请检查子域设备ID是否正确, 是否传入了空值等原因
  4. 蓝牙设备不支持进行设备绑定
  5. 默认第一个绑定设备人是是该设备的管理员

通过分享码进行绑定

设备的管理员可以通过生成设备分享码, 让其他用户对设备进行绑定, 这一过程分为两步, 分别是管理员生成分享码, 普通用户使用分享码进行绑定

(1) 管理员生成分享码

示例如下, 例如(设备逻辑ID:4, 分享码有效期:一小时):


    [ACBindManager fetchShareCodeWithSubDomain:@"test" deviceId:4 timeout:60 * 60 callback:^(NSString *shareCode, NSError *error) {
        if (!error) {
            //TODO...
        }
    }];

相关注意事项如下:

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

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


    [ACBindManager regenerateShareCodeWithSubDomain:@"test" deviceId:4 timeout:60 * 60 callback:^(NSString *shareCode, NSError *error) {
        if (!error) {
            //TODO...
        }
    }];

相关注意事项如下:

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

(2) 普通用户使用分享码进行绑定

建议将分享码做成二维码, 然后让其他用户通过扫码来绑定设备. 示例如下, 例如分享码是T47MbgBDG0KYSpwv2FZM0y05kd7Ba4AJ#32

    [ACBindManager bindDeviceWithShareCode:@"T47MbgBDG0KYSpwv2FZM0y05kd7Ba4AJ#32" callback:^(ACUserDevice *userDevice, NSError *error) {
        if (!error) {
            //TODO...
        }
    }];

相关注意事项如下:

  1. 如果绑定失败, 请检查是否是分享码已经过期.
  2. 如果该接口返回错误, 请根据错误信息自行检查, 包括网络是否通畅, 参数是否正确等.

解绑设备

  • 管理员或普通用户解绑设备
    [ACBindManager unbindDeviceWithSubDomain:@"test" deviceId:@"18FF18C2CAAD19EF" callback:^(NSError *error) {
        if (!error) {
            //TODO...
        }
    }];

相关注意事项如下:

  1. 如果管理员解绑设备, 则所有绑定该设备的用户失去设备控制权
  • 管理员取消其他普通成员对该设备的控制权
    [ACBindManager unbindDeviceWithUserSubDomain:@"test" userId:@"userId" deviceId:@"18FF18C2CAAD19EF" callback:^(NSError *error) {
        if (!error) {
            //TODO...
        }
    }];