门锁基础 API

更新时间:2023-11-27 05:40:21下载pdf

Wi-Fi 基础 API

基础能力 API 主要包含:临时密码、成员管理、日志能力等功能。当前这些功能主要针对拍照锁(categoryCodewf_jtmspro)和可视门锁(categoryCodevideolock_1w_1)。

临时密码说明

​临时密码分为在线临时密码和离线临时密码:

  • 在线临时密码:是指在生成密码时设备必须在线,生成后同步到门锁上。

  • 离线临时密码:在生成密码时设备不需要在线。但是离线密码的删除不同于在线密码。离线密码清除需要获取清空码,在门锁上输入清空码,即可清除掉离线密码。

​不同的门锁品类获取在线和离线密码使用不同的接口。拍照锁(categoryCodewf_jtmspro)和可视门锁(categoryCodevideolock_1w_1)拥有不同的实现。更多详情,请参考 Demo

拍照锁临时密码

获取拍照锁功能入口

IPhotoLock getPhotoLockManager();

示例代码

val iTuyaLockManager = TuyaOptimusSdk.getManager(ITuyaLockManager::class.java)
val iVideoLockManager = iTuyaLockManager?.newVideoLockManagerInstance(mDevId)
val iPhotoLock = iVideoLockManager?.photoLockManager

创建在线临时密码

接口说明

创建一个临时密码。

void createOnlineTempPassword(String password, String countryCode, String phone, long effectiveTime,long invalidTime, int availableTimes, String name, List<ScheduleBean> scheduleBean, ITuyaResultCallback<OnlineTempPassword> callback);

参数说明

参数 能否为空 说明
password 默认 7 位密码
countryCode 国家码
phone 手机号
effectiveTime 生效时间,单位:毫秒
invalidTime 失效时间,单位:毫秒
availableTimes 可用次数:
  • 0:永久(不限次数)
  • 1:一次性
name 密码名称
scheduleBean 一周内的有效时间
scheduleBean.allDay 是否全天生效
scheduleBean.effectiveTime 一天内开始生效的时间,单位:分钟
scheduleBean.invalidTime 一天内结束生效的时间,单位:分钟。例如,只允许该密码 10:30-12:00 生效,可设置为 effectiveTime=10\*60+30invalidTime = 12\*60。当 allDay=true 时,此设置不生效
scheduleBean.workingDay 一周内生效的天数,生效为 1,不生效为 0。顺序为:[周日、周一、周二、周三、周四、周五、周六]。例如,只在周一、周二不生效,可设置为 1001111,然后将此 2 进制转为 10 进制传入

示例代码

val scheduleBean = ScheduleBean()
        scheduleBean.allDay = true
        scheduleBean.workingDay = 127
        val list:MutableList<ScheduleBean> = ArrayList()
        list.add(scheduleBean)

        iPhotoLock?.createOnlineTempPassword("1231231",
            "86",
            "",
            System.currentTimeMillis(),
            System.currentTimeMillis() + 7 * 24 * 60 * 60 * 1000,
            0,
            "pwd ",
            list,
            object : ITuyaResultCallback<OnlineTempPassword> {
                override fun onSuccess(result: OnlineTempPassword?) {
                    ToastUtil.shortToast(mContext, "Create Success")
                    result?.let {
                        pwdList.add(it.pwdId)
                    }

                }

                override fun onError(errorCode: String?, errorMessage: String?) {
                    ToastUtil.shortToast(mContext, errorMessage)
                }

            })

更新在线密码名称

接口说明

void updateTempPasswordName(String pwdId, String name, IResultCallback callback);

参数说明

参数 能否为空 说明
pwdId 密码 ID
name 密码名称

示例代码

iPhotoLock?.updateTempPasswordName(
            pwdId,
            "testt",
            object : IResultCallback {
                override fun onError(code: String?, error: String?) {
                    ToastUtil.shortToast(mContext, error)
                }

                override fun onSuccess() {
                    ToastUtil.shortToast(mContext, "Update Success")
                }

            })

删除在线临时密码

接口说明

void deleteTempPassword(String pwdId, IResultCallback callback);

示例代码

iPhotoLock?.deleteTempPassword("pwdId", object : IResultCallback {
            override fun onError(code: String?, error: String?) {
                ToastUtil.shortToast(mContext, error)
            }

            override fun onSuccess() {
                ToastUtil.shortToast(mContext, "Delete Success")
            }
        })

获取在线密码列表

接口说明

void getOnlineTempPasswordList(ITuyaResultCallback<ArrayList<OnlineTempPasswordListBean>> callback);

回调数据结构 OnlineTempPasswordListBean 参数说明

参数 说明
id 密码 ID,即 pwdId
phone 手机号码
effective 是否有效:
  • 1:待生效
  • 2:待下发
  • 3:使用中
  • 4:待删除
  • 5:已过期
effectiveTime 生效时间 单位:毫秒
invalidTime 失效时间 单位:毫秒
availTime 可用次数:
  • 0:永久(不限次数)
  • 1:一次性
sn 临时密码硬件编号
name 密码名称
phase 密码状态:
  • 1:待下发
  • 2:已下发
  • 0:删除
gmtCreate 创建时间
timeZoneId 时区
scheduleDetails 一周内生效时间

示例代码

iPhotoLock?.getOnlineTempPasswordList(object :
            ITuyaResultCallback<ArrayList<OnlineTempPasswordListBean>> {
            override fun onSuccess(result: ArrayList<OnlineTempPasswordListBean>?) {
                ToastUtil.shortToast(mContext, "Get List Success")               
            }

            override fun onError(errorCode: String?, errorMessage: String?) {
                ToastUtil.shortToast(mContext, errorMessage)
            }

        })

获取拍照锁离线密码

离线密码只能由云端生成,返回给客户端。

接口说明

void getOfflinePassword(long gmtStart, long gmtExpired, OfflineTypeEnum offlineTypeEnum,
                            String countryCode, String pwdName, String mobile, ITuyaResultCallback<OfflineTempPasswordBean> callback);

参数说明

参数 能否为空 说明
gmtStart 生效时间
gmtExpired 失效时间
offlineTypeEnum 密码类型:
  • MULTIPLE:多次使用
  • SINGLE:单次使用
  • CLEAR_ALL:清空码
countryCode 国家码
pwdName 密码名称
mobile 手机号码

示例代码

iPhotoLock?.getOfflinePassword(System.currentTimeMillis()/1000,
            System.currentTimeMillis()/1000 + 24 * 60 * 60 ,
            OfflineTypeEnum.MULTIPLE,
            "",
            "offline pwd",
            "",
            object : ITuyaResultCallback<OfflineTempPasswordBean> {
                override fun onSuccess(result: OfflineTempPasswordBean?) {
                    ToastUtil.shortToast(mContext, "Get Pwd Success")                  
                }

                override fun onError(errorCode: String?, errorMessage: String?) {
                    ToastUtil.shortToast(mContext, errorMessage)
                }

            })

设置离线密码名称

接口说明

void setOfflinePasswordName(String pwdId, String pwdName, String mobile, IResultCallback callback);

参数说明

参数 能否为空 说明
pwdId 密码 ID
pwdName 密码名称
mobile 手机号码

示例代码

iPhotoLock?.setOfflinePasswordName("pwdId",
            "offline update",
            "",
            object : IResultCallback {
                override fun onError(code: String?, error: String?) {
                    ToastUtil.shortToast(mContext, error)
                }

                override fun onSuccess() {
                    ToastUtil.shortToast(mContext, "Update Pwd Success")
                }

            })

获取离线密码的清空码

接口说明

void getClearCode(String pwdId, ITuyaResultCallback<OfflineTempPasswordBean> callback);

示例代码

iPhotoLock?.getClearCode("pwdId",
            object : ITuyaResultCallback<OfflineTempPasswordBean> {
                override fun onSuccess(result: OfflineTempPasswordBean?) {
                    ToastUtil.shortToast(mContext, " get clear code:${result?.pwd}")
                }

                override fun onError(errorCode: String?, errorMessage: String?) {
                    ToastUtil.shortToast(mContext, errorMessage)
                }

            })

获取离线临时密码列表

接口说明

void getOfflinePasswordList(OfflineTypeEnum offlineTypeEnum, int offset, int limit, OfflinePasswordStatusEnum offlinePasswordStatusEnum,
                                ITuyaResultCallback<ArrayList<OfflinePasswordListBean>> callback);

参数说明

参数 能否为空 说明
offlineTypeEnum 密码类型:
  • MULTIPLE:多次使用
  • SINGLE:单次使用
  • CLEAR_ALL:清除所有密码的清空码
offset 页码
limit 每页数据上限
offlinePasswordStatusEnum 密码状态:
  • 已生成未使用:TO_BE_USED
  • 已使用:USED
  • 已过期:EXPIRED

回调数据结构 OfflinePasswordListBean 参数说明

参数 说明
opModeSubType opModeType 的子类型
pwdTypeEnum 密码类型:
  • MULTIPLE:多次使用
  • SINGLE:单次使用
  • CLEAR_ALL:清除所有密码的清空码
hasClearPwd 是否有清空码
timeZoneId 时区
mobile 手机号码
opModeType 解锁类型:
  • 1:在线临时密码
  • 3:多次离线密码
  • 8:单次离线密码
  • 9:所有离线密码的清空码
gmtCreate 创建时间,单位:毫秒
gmtStart 生效时间,单位:毫秒
gmtExpired 失效时间,单位:毫秒
pwdTypeCode 密码类型编号:
  • multiple:多次使用密码
  • once:单次使用密码
  • clear_one:清除单个密码
  • clear_all:清除所有密码
optUid 操作用户 UID
revokedPwdName 清空码名称
pwdName 密码名称
pwdId 密码id
pwd 密码
deliveryStatus 下发状态
email 邮箱
statusEnum 密码状态:
  • TO_BE_USED:未使用
  • USED:使用中
  • EXPIRED:已过期

获取不限次数的离线临时密码列表

接口说明

void getNoLimitOfflinePassword(ITuyaResultCallback<ArrayList<OfflineTempPasswordBean>> callback);

示例代码

iPhotoLock?.getNoLimitOfflinePassword(object :
            ITuyaResultCallback<ArrayList<OfflineTempPasswordBean>> {
            override fun onSuccess(result: ArrayList<OfflineTempPasswordBean>?) {
                ToastUtil.shortToast(mContext, "password:${result?.toString()}")
            }

            override fun onError(errorCode: String?, errorMessage: String?) {
                ToastUtil.shortToast(mContext, errorMessage)
            }

        })

可视门锁临时密码

获取设备硬件编号 SN

接口说明

硬件上报的开门方式的 SN 码,用于创建临时密码等开门方式。

void getDeviceSN(String dpId,ITuyaResultCallback<Integer> callback);

参数说明

参数 能否为空 说明
dpId 开门方式对应的 dpId,当前为在线临时密码的 dpId
callback 返回 SN

示例代码

  iVideoLock?.getDeviceSN( "69", object : ITuyaResultCallback<Int> {
            override fun onSuccess(result: Int?) {
                
            }

            override fun onError(errorCode: String?, errorMessage: String?) {
                ToastUtil.shortToast(mContext, errorMessage)
            }

        })

创建在线临时密码

接口说明

void createOnlineTempPassword(int sn, String password, long effectiveTime, long invalidTime,
                                  int availableTimes, String name, List<ScheduleBean> scheduleBean, ITuyaResultCallback<String> callback);

参数说明

参数 能否为空 说明
sn 临时密码的硬件 SN
password 密码,允许长度 4-15位
effectiveTime 生效时间,单位:秒、毫秒均可
invalidTime 失效时间,单位:秒、毫秒均可
availableTimes 可用次数:
  • 0:多次
  • 1:一次
name 密码名称
scheduleBean 一周内的周期设置
scheduleBean.allDay 是否全天生效
scheduleBean.effectiveTime 一天内开始生效的时间,单位:分钟
scheduleBean.invalidTime 一天内结束生效的时间,单位:分钟。例如,只允许该密码 10:30-12:00 生效,可设置为 effectiveTime=10\*60+30invalidTime = 12\*60。当 allDay=true 时,此设置不生效
scheduleBean.workingDay 一周内生效的天数,生效为 1,不生效为 0。顺序为:[周日、周一、周二、周三、周四、周五、周六]。例如,只在周一、周二不生效,可设置为 1001111,然后将此 2 进制转为 10 进制传入

返回数据

参数 说明
unlockBindingId 临时密码编号

示例代码

val scheduleBean = ScheduleBean()
        scheduleBean.allDay = true
        scheduleBean.workingDay = 127
        val list: MutableList<ScheduleBean> = ArrayList()
        list.add(scheduleBean)
        iVideoLock?.createOnlineTempPassword(sn,
            "123124",
            System.currentTimeMillis() / 1000,
            System.currentTimeMillis() + 24 * 60 * 60,
            0,
            "online pwd ",
            list,
            object : ITuyaResultCallback<String> {
                override fun onSuccess(result: String?) {
                    ToastUtil.shortToast(mContext, "pwd :${result}")                    
                }

                override fun onError(errorCode: String?, errorMessage: String?) {
                    ToastUtil.shortToast(mContext, errorMessage)
                }

            })

更新在线密码

接口说明

更新密码,修改生效日期、生效失效、密码名称。

void updateOnlineTempPassword(String unlockBindingId, String password, long effectiveTime,
                                  long invalidTime, String name, int phase,
                                  List<ScheduleBean>  scheduleBean, IResultCallback callback);

参数说明

参数 能否为空 说明
unlockBindingId 临时密码编号
password 密码
effectiveTime 生效时间 单位:秒、毫秒均可
invalidTime 失效时间 单位:秒、毫秒均可
name 密码名称
phase 密码状态:
  • 2:正常
  • 4:冻结
scheduleBean 一周内的周期设置
scheduleBean.allDay 是否全天生效
scheduleBean.effectiveTime 一天内开始生效的时间,单位:分钟
scheduleBean.invalidTime 一天内结束生效的时间,单位:分钟。例如,只允许该密码 10:30-12:00 生效,可设置为 effectiveTime=10\*60+30invalidTime = 12\*60。当 allDay=true 时,此设置不生效
scheduleBean.workingDay 一周内生效的天数,生效为 1,不生效为 0。顺序为:[周日、周一、周二、周三、周四、周五、周六]。例如,只在周一、周二不生效,可设置为 1001111,然后将此 2 进制转为 10 进制传入

示例代码

val scheduleBean = ScheduleBean()
        scheduleBean.allDay = true
        scheduleBean.workingDay = 127
        val list: MutableList<ScheduleBean> = ArrayList()
        list.add(scheduleBean)        iVideoLock?.updateOnlineTempPassword("unlockBindingId","2223334",System.currentTimeMillis()/1000,
        System.currentTimeMillis()/1000+24*60*60,"online pwd update${num}",2,list,object :IResultCallback{
                override fun onError(code: String?, error: String?) {
                    ToastUtil.shortToast(mContext, error)
                }

                override fun onSuccess() {
                    ToastUtil.shortToast(mContext, "update success ")
                }

            })

更新在线密码名称

接口说明

void updateOnlineTempPasswordName(String unlockBindingId, String name, IResultCallback callback);

参数说明

参数 能否为空 说明
unlockBindingId 临时密码编号
name 密码名称

示例代码

iVideoLock?.updateOnlineTempPasswordName(
            "unlockBindingId",
            "online update",
            object : IResultCallback {
                override fun onError(code: String?, error: String?) {
                    ToastUtil.shortToast(mContext, error)
                }

                override fun onSuccess() {
                    ToastUtil.shortToast(mContext, "update success ")
                }

            })

删除在线临时密码

接口说明

void deleteOnlineTempPassword(String unlockBindingId, IResultCallback callback);

示例代码

iVideoLock?.deleteOnlineTempPassword("unlockBindingId", object : IResultCallback {
            override fun onError(code: String?, error: String?) {
                ToastUtil.shortToast(mContext, error)
            }

            override fun onSuccess() {
                ToastUtil.shortToast(mContext, "success ")
            }
        })

获取离线临时密码

接口说明

void getOfflineTempPassword(long gmtStart, long gmtExpired, OfflineTypeEnum offlineTypeEnum,
                                String countryCode, String pwdName, String mobile, ITuyaResultCallback<OfflineTempPasswordBean> callback);

参数说明

参数 能否为空 说明
gmtStart 生效时间 ,单位:秒
gmtExpired 失效时间,单位:秒
offlineTypeEnum 密码类型:
  • MULTIPLE:多次使用
  • SINGLE:单次使用
  • CLEAR_ALL:清除所有密码的清空码
countryCode 国家码
pwdName 密码名称
mobile 手机号码

示例代码

iVideoLock?.getOfflineTempPassword(System.currentTimeMillis() / 1000,
            System.currentTimeMillis() / 1000 + 48 * 60 * 60,
            OfflineTypeEnum.MULTIPLE,
            "86",
            "offline pwd test",
            "",
            object : ITuyaResultCallback<OfflineTempPasswordBean> {
                override fun onSuccess(result: OfflineTempPasswordBean?) {
                    ToastUtil.shortToast(mContext, result?.toString())
                    result?.let {
                        offlinePwdList.add(it.unlockBindingId)
                    }
                }

                override fun onError(errorCode: String?, errorMessage: String?) {
                    ToastUtil.shortToast(mContext, errorMessage)
                }

            })

设置离线临时密码名称

接口说明

void setOfflineTempPasswordName(String pwdName, String unlockBindingId, IResultCallback callback);

参数说明

参数 能否为空 说明
unlockBindingId 临时密码编号
pwdName 密码名称

示例代码

iVideoLock?.setOfflineTempPasswordName(            
            "Offline pwd tt ",
  					"unlockBindingId",
            object : IResultCallback {
                override fun onError(code: String?, error: String?) {
                    ToastUtil.shortToast(mContext, error)
                }

                override fun onSuccess() {
                    ToastUtil.shortToast(mContext, "update success")
                }

            })

获取离线密码的清空码

接口说明

void getClearCode(String pwdName, String unlockBindingId, ITuyaResultCallback<OfflineTempPasswordBean> callback);

参数说明

参数 能否为空 说明
unlockBindingId 临时密码编号
pwdName 密码名称

示例代码

iVideoLock?.getClearCode(
            "clear code",
           "unlockBindingId",
            object : ITuyaResultCallback<OfflineTempPasswordBean> {
                override fun onSuccess(result: OfflineTempPasswordBean?) {
                    ToastUtil.shortToast(mContext, result?.toString())
                }

                override fun onError(errorCode: String?, errorMessage: String?) {
                    ToastUtil.shortToast(mContext, errorMessage)
                }

            })

获取临时密码列表

接口说明

同时获取在线密码和离线密码。

void getTempPasswordList(ITuyaResultCallback<ArrayList<VideoLockTempPasswordBean>> callback);

回调数据结构 VideoLockTempPasswordBean ClearCodeInfo 参数说明

参数 说明
unlockBindingId 临时密码编号
effectiveTime 生效时间
invalidTime 失效时间
name 密码名称
phase 状态:
  • 1:正常
  • 2:更新中
  • 3:冻结
  • 4:冻结中
  • 9:待删除
  • 10:新增中
effective 生效状态:
  • 1:待生效
  • 2:生效中
  • 4:已失效
opModeType 解锁类型:
  • 1:在线临时密码
  • 3:多次离线密码
  • 8:单次离线密码
opModeSubType opModeType 的子类型
sn 硬件上报编码
opModeInfo 清空码信息
hasClearPwd 是否设置清空码
revokedPwdName 清空码名称
revokedPwdEffectiveTime 清空码有效时间
revokedPwdInvalidTime 清空码失效时间

示例代码

iVideoLock?.getTempPasswordList(object :
            ITuyaResultCallback<ArrayList<VideoLockTempPasswordBean>> {
            override fun onSuccess(result: ArrayList<VideoLockTempPasswordBean>?) {
                ToastUtil.shortToast(mContext, result?.toString())

            }

            override fun onError(errorCode: String?, errorMessage: String?) {
                ToastUtil.shortToast(mContext, errorMessage)
            }

        })

成员管理

成员分为 家庭成员非家庭成员(门锁成员)

  • 家庭成员:涂鸦 智能生活 App SDK 中的家庭成员概念。门锁 SDK 将对应的门锁密码编号与该账号关联起来。相关管理操作,请参考 家庭管理

  • 非家庭成员:即为门锁设备单独的成员,仅跟随设备关联。用户可以创建并分配,门锁 SDK 将对应的门锁密码编号与该成员关联起来。

本小节主要介绍门锁成员中 非家庭成员 的管理操作。

成员管理功能入口

ILockBaseAbilityManager getBaseAbilityManager();

示例

val iTuyaLockManager = TuyaOptimusSdk.getManager(ITuyaLockManager::class.java)
val iVideoLockManager = iTuyaLockManager?.newVideoLockManagerInstance(mDevId)
val iLockBaseAbilityManager = iVideoLockManager?.baseAbilityManager

添加门锁成员

接口说明

即门锁面板成员。与家庭成员不同,被添加门锁成员不需要注册账户,没有权限管理当前账户下的其他设备。门锁成员的主要目的是关联开门方式和日志记录。

void addUser(String name, File avatar, String sex, Long birthday, Integer height,
                 Integer weight, String heightUnit, ITuyaResultCallback<String> callback);

参数说明

参数 能否为空 说明
name 成员名称
avatar 头像文件
sex 性别
birthday 生日
height 身高
weight 体重
heightUnit 身高单位:
  • CM:厘米
  • INCH:英寸
Callback 调用接口回调结果

示例代码

iLockBaseAbilityManager?.addUser("User",null,"0",System.currentTimeMillis(),
        180,80,"CM",object :ITuyaResultCallback<String>{
                override fun onSuccess(result: String?) {                    
                    ToastUtil.shortToast(mContext,"Add Success")
                }

                override fun onError(errorCode: String?, errorMessage: String?) {
                    ToastUtil.shortToast(mContext,errorMessage)
                }

            })

更新成员信息

接口说明

更新成员名称、头像。

void updateUser(String userId, String userName, File avatar, IResultCallback callback);

参数说明

参数 能否为空 说明
userId 成员 ID
userName 成员名称
avatar 头像文件
Callback 调用接口回调结果

示例代码

iLockBaseAbilityManager?.updateUser("userId","User",null,
        object :IResultCallback{
            override fun onError(code: String?, error: String?) {
                ToastUtil.shortToast(mContext,error)
            }

            override fun onSuccess() {
                ToastUtil.shortToast(mContext,"Modify Success")
            }

        })

删除成员

接口说明

void deleteUser(String userId, IResultCallback callback);

示例代码

iLockBaseAbilityManager?.deleteUser("userid",object :IResultCallback{
            override fun onError(code: String?, error: String?) {
                ToastUtil.shortToast(mContext,error)
            }

            override fun onSuccess() {
                ToastUtil.shortToast(mContext,"Delete Success")
                
            }

        })

获取成员列表

接口说明

void getUsersList(ITuyaResultCallback<ArrayList<WifiLockUserBean>> callback);

回调数据结构 WifiLockUserBean 说明

参数 说明
userId 门锁成员 ID
avatarUrl 用户头像
userContact 用户联系方式
nickName 用户昵称
userType 用户类型:
  • 10:管理员
  • 20:普通家庭成员
  • 40:被动接受分享的成员
  • 50:家庭拥有者
lockUserId 用户在门锁上的编号
unlockCountMap 解锁方式个数集合。keydpId
unlockList 解锁方式名称列表

示例代码

iLockBaseAbilityManager?.getUsersList(object :ITuyaResultCallback<ArrayList<WifiLockUserBean>>{
            override fun onSuccess(result: ArrayList<WifiLockUserBean>?) {
               
            }

            override fun onError(errorCode: String?, errorMessage: String?) {
               
            }

        })

成员详情

接口说明

获取成员详细信息。

void getUserDetail(String userId, ITuyaResultCallback<WifiLockUserDetail> callback);

回调数据结构 WifiLockUserDetail 说明

参数 说明
userId 门锁成员 ID
avatarUrl 用户头像
userContact 用户联系方式
nickName 用户昵称
userType 用户类型:
  • 10:管理员
  • 20:普通家庭成员
  • 40:被动接受分享的成员
  • 50:家庭拥有者
unlockDetail 解锁方式详情列表
unlockDetail.dpId 解锁方式 dpId
unlockDetail.unlockList 解锁方式详情
unlockList.opModeId 解锁方式云端序号
unlockList.unlockId 解锁方式编号
unlockList.admin 是否是管理员解锁方式
unlockList.unlockName 解锁方式名称
unlockList.unlockAttr 解锁方式属性。1:劫持
unlockList.photoUnlock 是否开启开门抓拍
unlockList.allocateFlag 成员和开门方式是否可以解绑:
  • 1:是
  • 0:否

示例代码

iLockBaseAbilityManager?.getUserDetail(userId,object :ITuyaResultCallback<WifiLockUserDetail>{
            override fun onSuccess(result: WifiLockUserDetail?) {
                
            }

            override fun onError(errorCode: String?, errorMessage: String?) {
               
            }

        })

获取成员数量

接口说明

获取家庭成员数量和门锁成员数量。

void getUserCount(ITuyaResultCallback<Pair<Integer, Integer>> callback);

参数说明

参数 说明
Pair.first 家庭成员数量
Pair.second 门锁成员数量

日志功能

获取日志功能入口

ILockBaseAbilityManager getBaseAbilityManager();

示例

val iTuyaLockManager = TuyaOptimusSdk.getManager(ITuyaLockManager::class.java)
val iVideoLockManager = iTuyaLockManager?.newVideoLockManagerInstance(mDevId)
val iLockBaseAbilityManager = iVideoLockManager?.baseAbilityManager

获取最近的一条记录

接口说明

void getLatestLog(int userType, String userId, ITuyaResultCallback<LatestLogBean> callback);

参数说明

参数 能否为空 说明
userType 用户体系类型:
  • 0:家庭用户体系
  • 1:面板用户体系
userId 用户编号 ID:
  • 如果是家庭体系,userIdmemberId
  • 如果是面板用户体系,则是添加面板成员返回的 ID
Callback 调用接口回调结果

回调结果 LatestLogBean 数据结构说明

参数 说明
logCategory 日志大类:
  • 操作日志:operation
  • 开门记录:unlock_record
  • 关门记录:close_record
  • 告警记录:alarm_record
logType 日志类型
recordType 仅开门记录返回:
  • 1:普通开门记录
  • 2:告警记录
unlockNameRosettaKey 关锁记录的多语言
currentUser 是否当前用户
userId 用户编号
userName 用户名称
unlockName 解锁方式名称
time 日志事件时间
relateDevName 关联设备名称
relateOpMode 关联解锁信息
unReadCount 未读记录数
data 告警或操作记录的详情数据
channelId 通道 ID(门禁设备专用)
unionUnlockInfo 组合解锁信息
unionUnlockInfo.currentUser 组合解锁时,是否是当前用户
unionUnlockInfo.sn 组合解锁时,硬件编号

示例代码

iLockBaseAbilityManager?.getLatestLog(
                0,
                “userId”,
                object : ITuyaResultCallback<LatestLogBean> {
                    override fun onSuccess(result: LatestLogBean?) {
                       
                    }

                    override fun onError(errorCode: String?, errorMessage: String?) {
                        
                    }

                })

获取日志记录

接口说明

获取日志记录列表。

void getLogList(String logCategories, String userIds, boolean onlyShowMediaRecord, Long startTime, Long endTime,
                    String lastRowKey, int limit, int userType, String userId, ITuyaResultCallback<LogsListBean> callback);

参数说明

参数 能否可为空 说明
logCategories 日志大类:
  • 操作日志:operation
  • 开门记录:unlock_record
  • 关门记录:close_record
  • 告警记录:alarm_record
userIds 需要筛选的用户 ID 列表,以逗号 (,) 分隔,如 12,13
onlyShowMediaRecord 是否仅显示带图片或者视频的记录, 默认为 false,即显示所有记录
startTime 开始时间(单位毫秒)
endTime 结束时间(单位毫秒)
lastRowKey 上一页的数据 key
limit 每页数据个数
userType 用户体系类型:
  • 0:家庭体系
  • 1:面板用户体系
userId 用户编号 ID:
  • 如果是家庭体系,userIdmemberId
  • 如果是面板用户体系,则是添加面板成员返回的 ID
Callback 调用接口回调结果

回调 LogsListBeanLogsInfoBean MediaInfo 数据结构说明

参数 说明
hasMore 是否还有数据
lastRowKey 上一页的数据 key
records 日志具体信息
records.logType 日志类型
records.data dp点数据值
records.recordType 仅开门记录返回:
  • 1:普通开门记录
  • 2:告警记录
records.dpId DP 点 ID
records.unlockName 解锁方式名称, 可能为空
records.userName 用户名称
records.userId 用户id
records.currentUser 是否是当前用户
records.memberBindableFlag 是否可以绑定到用户
records.logId 日志id
records.time 日志事件时间
records.logCategory 日志大类:
  • 操作日志:operation
  • 开门记录:unlock_record
  • 关门记录:close_record
  • 告警记录:alarm_record
records.mediaInfoList 视频和图片信息(适用门锁类型:可视对讲、Wi-Fi 低功耗或常保活带视频或者图像的锁)
mediaInfoList.fileUrl 封面图文件 URL
mediaInfoList.fileKey 封面图的解密密钥
mediaInfoList.mediaPath 记录视频的相对地址
mediaInfoList.mediaBucket 记录视频所属的仓库地址
mediaInfoList.mediaKey 记录视频的解密密钥

示例代码

iLockBaseAbilityManager?.getLogList("",
                null,
                false,
                null,
                System.currentTimeMillis(),
                "",
                20,
                0,
                "userid",
                object : ITuyaResultCallback<LogsListBean> {
                    override fun onSuccess(result: LogsListBean?) {
                        
                    }

                    override fun onError(errorCode: String?, errorMessage: String?) {
                        
                    }

                })

开门记录绑定到用户

接口说明

默认日志记录中的接口和用户是关联的,此接口可以将开门记录和用户绑定。

void bindUnlockWaysToUser(String userId, String[] unlockIds, IResultCallback callback);

参数说明

参数 能否为空 说明
unlockIds 解锁方式列表。格式:[12-01,13-02],前后数字表示“解锁方式类型-编号”
userId 用户编号 ID:
  • 如果是家庭体系,userIdmemberId
  • 如果是面板用户体系,则是添加面板成员返回的 ID
Callback 调用接口回调结果

示例代码

val array = arrayOf("${logsInfoBean.dpId}-${logsInfoBean.data}")
            iLockBaseAbilityManager?.bindUnlockWaysToUser("the userid will be bound",
                array, object : IResultCallback {
                    override fun onError(code: String?, error: String?) {
                       
                    }

                    override fun onSuccess() {
                        
                    }

                })

其他

获取图像旋转角度

接口说明

void getDevicePhotoRotateAngel(ITuyaResultCallback<JSONObject> callback);

示例代码

val iTuyaLockManager = TuyaOptimusSdk.getManager(ITuyaLockManager::class.java)
        iTuyaVideoLockManager = iTuyaLockManager.newVideoLockManagerInstance(mDevId)
        iTuyaVideoLockManager?.getDevicePhotoRotateAngel(object :ITuyaResultCallback<JSONObject>{
            override fun onSuccess(result: JSONObject?) {
                TODO("Not yet implemented")
            }

            override fun onError(errorCode: String?, errorMessage: String?) {
                TODO("Not yet implemented")
            }

        })

获取相册列表

接口说明

void getAlbumList(ITuyaResultCallback<AlbumBean> callback);

回调数据结构 AlbumBean AlbumInfo 参数说明

参数 说明
eventTypes 相册里封面图和视频的类型
albumList 相册列表
albumList.eventType 文件类型,详见 拍照锁事件定义
albumList.fileUrl 封面图地址
albumList.fileKey 封面图秘钥
albumList.mediaPath 视频地址
albumList.mediaKey 视频秘钥
albumList.mediaBucket 视频所在仓库
albumList.uploadTime 文件上传的时间

销毁

当不再使用相关功能时,调用销毁方法,避免程序发生异常。涉及到销毁的类包含:IVideoLockIPhotoLockILockBaseAbilityManager。销毁方法:

void onDestroy();

附录

拍照锁事件定义

事件状态 描述 状态值
状态1 防撬告警 0x0000
状态2 远程开门请求 0x0001
状态3 指纹开门试错 0x0002
状态4 密码开门试错 0x0003
状态5 卡片开门试错 0x0004
状态6 人脸开门试错 0x0005
状态7 掌纹开门试错 0x0006
状态8 指静脉开门试错 0x0007
状态9 指纹开门 0x0008
状态10 密码开门 0x0009
状态11 卡片开锁 0x000A
状态12 人脸开锁 0x000B
状态13 掌静脉开锁 0x000C
状态14 指静脉开锁 0x000D
状态15 临时密码解锁 0x000E
状态16 动态密码解锁 0x000F
状态17 远程解锁 0x0010
状态18 离线密码解锁上报 0x0011
状态19 门铃解锁上报 0x0012
状态20 劫持告警 0x0013
状态21 低电报警 0x0014
状态22 钥匙插入报警 0x0015
状态23 高温报警 0x0016
状态24 门铃+远程开门 0x0017
状态25 有人停留(逗留) 0x0018
状态26 门锁被破坏 0x0019
状态27 特殊指纹开锁 0x001A
状态28 布防模式下开锁 0x001B
状态29 遥控开门 0x001C