此插件封装了吾家智锁蓝牙通信协议部分,通过接口函数轻松生成蓝牙指令,开发者只需将指令通过蓝牙发送出去,再解析指令回复获取结果。
功能示例
微信公众平台添加插件"吾家智锁sdk",提交申请,并发送邮件至logsoul@qq.com,申请appKey, 注明申请小程序主体信息,联系方式,appId,应用名称,应用说明,我们将于1~2个工作日处理。
const plugin = requirePlugin("myPlugin") ... App({ onLaunch(options) { console.debug('[AppOnLaunch]', options) this.globalData.sysinfo = wx.getSystemInfoSync() plugin.init('appId', 'appKey') .then(function(res){ console.log('res', res) if(res.code != 200){ //sdk验证失败,将无法使用生成离线密码功能 wx.showToast({ title: res.data.msg, }) } }) })
function parseBytes(devName, basecode, data)
- params: >>devName: String类型,锁蓝牙名称, >>basecode: int类型,8位素数,用于蓝牙通信解密 >>data: 接收到的蓝牙回复数据
- return json: >>cmd: String类型,函数接口名称, >>code: int类型,200表示指令返回预期结果,300表示指令错误 >>data: object类型,指令返回数据。
function queryLockState(devName)
- params: >>devName: String类型,锁蓝牙名称
- return data: >>isBind: bool类型,表示锁硬件绑定状态, >>mac: String类型,表示锁的蓝牙MAC地址
function queryLockBattery(devName)
- params: >>devName: String类型,锁蓝牙名称
- return data: >>battery: int类型,表示锁电池电量百分比
注意:开锁成功,会主动上报电量,主动上报接口名称为reportLockBattery。
function sendBindLock(devName, lockId, managerId, basecode)
- params: >>devName: String类型,锁蓝牙名称 >>lockId: int类型,锁注册id >>managerId: int类型,锁管理员id >>basecode: int类型,8位素数,用于蓝牙通信加密,建议每一把锁提供不同的basecode
- return: >>code: int类型,200表示绑定成功,300表示绑定失败
function sendUnbindLock(devName, lockId, managerId, basecode)
- params: >>devName: String类型,锁蓝牙名称 >>lockId: int类型,锁注册id >>managerId: int类型,锁管理员id >>basecode: int类型,绑定时生成
- return: >>code: int类型,200表示解绑成功,300表示解绑失败
function sendOpenLockP1(devName, basecode)
- params: >>devName: String类型,锁蓝牙名称 >>basecode: int类型,蓝牙通信加密码
- return data: >>randomN: int类型,解锁第二步加密参数
function sendOpenLockP2(devName, basecode, randomN)
- params: >>devName: String类型,锁蓝牙名称 >>basecode: int类型,蓝牙通信加密码
>>randomN: int类型,解锁第一步返回
- return: >>code: int类型,200表示蓝牙开锁成功,300表示蓝牙开锁失败
syncClock(devName, basecode, time)
- params: >>devName: String类型,锁蓝牙名称 >>basecode: int类型,蓝牙通信加密码 >>time: Date类型,本地时钟,例如**为UTC+8时间
- return: >>code: int类型,200表示同步时钟成功,300表示同步时钟失败 注意:�当密码,刷卡无法开门,或重启后,需要更新时钟。
function addPincode(devName, basecode, pincode, index, startTime, endTime)
- params: >>devName: String类型,锁蓝牙名称 >>basecode: int类型,蓝牙通信加密码 >>pincode: int类型,6位开锁密码 >>index: int类型,密码序号,0~99,不需要,传0 >>startTime: Date类型,密码生效时间,取本地时钟,例如**为UTC+8时间 >>endTime: Date类型,密码失效时间,取本地时钟,例如**为UTC+8时间
- return: >>code: int类型,200表示添加成功,300表示添加失败
注意:密码开锁结果上报,接口名称reportPincodeResult,json数据结构如下:
{ >>pincode: int类型,表示开锁密码 >>time: date类型,表示开锁时间 >>type: int类型, 表示密码类型 >>isValid: bool类型,表示密码是否开锁成功 }
function delPincode(devName, basecode, pincode, index)
- params: >>devName: String类型,锁蓝牙名称 >>basecode: int类型,蓝牙通信加密码 >>pincode: int类型,6位开锁密码 >>index: int类型,密码序号,0~99,不需要,传0
- return: >>code: int类型,200表示删除成功,300表示删除失败
function addRfCard(devName, basecode, cardId, index, startTime, endTime)
- params: >>devName: String类型,锁蓝牙名称 >>basecode: int类型,蓝牙通信加密码 >>cardId: int类型,房卡卡号 >>index: int类型,房卡序号,0~99,不需要,传0 >>startTime: Date类型,房卡生效时间,取本地时钟,例如**为UTC+8时间 >>endTime: Date类型,房卡失效时间,取本地时钟,例如**为UTC+8时间
- return: >>code: int类型,200表示添加成功,300表示添加失败
注意:刷卡开锁结果上报,接口名称reportRfCardResult,数据结构如下:
{ >>cardId: int类型,表示房卡卡号 >>time: date类型,表示开锁时间 >>type: int类型, 表示房卡类型 >>isValid: bool类型,表示房卡是否开锁成功 }
function delRfCard(devName, basecode, cardId, index)
- params: >>devName: String类型,锁蓝牙名称 >>basecode: int类型,蓝牙通信加密码 >>cardId: int类型,房卡卡号 >>index: int类型,房卡序号,0~99,不需要,传0
- return: >>code: int类型,200表示删除成功,300表示删除失败
function login1(devName, basecode)
- params: >>devName: String类型,锁蓝牙名称 >>basecode: int类型,蓝牙通信加密码
- return data: >>randomN: int类型,解锁第二步加密参数
function login2(devName, basecode, randomN)
- params: >>devName: String类型,锁蓝牙名称 >>basecode: int类型,蓝牙通信加密码
>>randomN: int类型,解锁第一步返回
- return: >>code: int类型,200表示登录成功,300表示登录失败 注意:登录态表示一种鉴权行为。同步时钟,管理密码,房卡,指纹,均需要先登录后方可操作。
syncClock(devName, basecode, time)
- params: >>devName: String类型,锁蓝牙名称 >>basecode: int类型,蓝牙通信加密码 >>time: Date类型,本地时钟,例如**为UTC+8时间
- return: >>code: int类型,200表示同步时钟成功,300表示同步时钟失败
>>data: object类型,其中msg表示提示信息
注意:�当密码,刷卡,指纹无法开门,或重启后,需要更新时钟。
function addPincode(devName, basecode, pincode, index, startTime, endTime)
- params: >>devName: String类型,锁蓝牙名称 >>basecode: int类型,蓝牙通信加密码 >>pincode: int类型,6位开锁密码 >>index: int类型,密码序号,0~99 >>startTime: Date类型,密码生效时间,取本地时钟,例如**为UTC+8时间 >>endTime: Date类型,密码失效时间,取本地时钟,例如**为UTC+8时间
- return: >>code: int类型,200表示添加成功,300表示添加失败
>>data: object类型,其中msg表示提示信息
注意:密码开锁结果上报,接口名称reportPincodeResult,数据结构如下: { > index: int类型,表示密码序号 > time: date类型,表示开锁时间 > isValid: bool类型,表示密码是否开锁成功 }
function delPincode(devName, basecode, pincode, index)
- params: >>devName: String类型,锁蓝牙名称 >>basecode: int类型,蓝牙通信加密码 >>pincode: int类型,6位开锁密码,不需要,传0 >>index: int类型,密码序号,0~99,必须
- return: >>code: int类型,200表示删除成功,300表示删除失败
function addRfCard(devName, basecode, cardId, index, startTime, endTime)
- params: >>devName: String类型,锁蓝牙名称 >>basecode: int类型,蓝牙通信加密码 >>cardId: int类型,房卡卡号,不需要,传0 >>index: int类型,房卡序号,0~99,必须 >>startTime: Date类型,房卡生效时间,取本地时钟,例如**为UTC+8时间 >>endTime: Date类型,房卡失效时间,取本地时钟,例如**为UTC+8时间
- return: >>code: int类型,100时,表示进入添卡模式,200表示添加成功,300表示添加失败 >>data: object类型,其中msg表示提示信息
注意:指纹锁系列添加房卡,是先发送指令进入添卡模式,再刷卡完成添加。 密码开锁结果上报,接口名称reportRfCardResult,json数据结构如下: { > index: int类型,表示房卡序号 > time: date类型,表示开锁时间 > isValid: bool类型,表示房卡是否开锁成功,但无效房卡不会回调 }
function delRfCard(devName, basecode, cardId, index)
- params: >>devName: String类型,锁蓝牙名称 >>basecode: int类型,蓝牙通信加密码 >>cardId: int类型,房卡卡号,不需要,传0 >>index: int类型,房卡序号,0~99,必须
- return: >>code: int类型,200表示删除成功,300表示删除失败
function addFingerprint(devName, basecode, index, startTime, endTime)
- params: >>devName: String类型,锁蓝牙名称 >>basecode: int类型,蓝牙通信加密码 >>index: int类型,指纹序号,0~99,必须 >>startTime: Date类型,指纹生效时间,取本地时钟,例如**为UTC+8时间 >>endTime: Date类型,指纹失效时间,取本地时钟,例如**为UTC+8时间
- return: >>code: int类型,100时,表示进入添加指纹模式,200表示添加成功,300表示添加失败 >>data: object类型,其中msg表示提示信息
注意:指纹锁系列添加指纹,是先发送指令进入添加指纹,再刷反复录入指纹完成添加。 指纹开锁结果上报,接口名称reportFingerprintResult,数据结构如下: { > index: int类型,表示指纹序号 > time: date类型,表示开锁时间 > isValid: bool类型,表示指纹是否开锁成功,但无效指纹不会回调 }
function delFingerprint(devName, basecode, index)
- params: >>devName: String类型,锁蓝牙名称 >>basecode: int类型,蓝牙通信加密码 >>index: int类型,指纹序号,0~99,必须
- return: >>code: int类型,200表示删除成功,300表示删除失败
function changeAdminPincode(devName, mac, oldPwd, newPwd)
- params: >>devName: String类型,锁蓝牙名称 >>mac: String类型,锁蓝牙MAC地址 >>oldPwd: int类型,锁原来管理密码,初始状态默认12345678,可开门 >>newPwd: int类型,锁新的管理密码
- return: >>code: int类型,200表示修改成功,300表示修改失败
注意:指纹锁��初始状态下管理密码为12345678,因此绑定门锁后,建议立即修改管理密码。
function queryNbImei(devName)
- params: >>devName: String类型,锁蓝牙名称
- return data: >>imei: String类型,表示NB模组设备imei
function setNbFun(devName, enable)
- params: >>devName: String类型,锁蓝牙名称 >>enable: Boolean类型,表示是否开启,true为开启(绑定后默认打开),false为禁用
- return data: >>code: int类型,200表示设置成功,300表示失败 >>msg: String类型,表示设置NB功能命令情况 注意:1.具备NB模组的锁,绑定后NB功能默认打开。2.设置此指令前,需要先进入登录态(详见4.1),否则会报错'login state off'
function sendOpenLockP1(devName, basecode)
- params: >>devName: String类型,取电开关名称 >>basecode: int类型,蓝牙通信加密码
- return data: >>randomN: int类型,上电第二步加密参数
function sendOpenLockP2(devName, basecode, randomN)
- params: >>devName: String类型,取电开关蓝牙名称 >>basecode: int类型,蓝牙通信加密码
>>randomN: int类型,上电第一步返回
- return: >>code: int类型,200表示蓝牙上电成功,300表示蓝牙上电失败
注意:蓝牙取电开关,当蓝牙上电后,蓝牙断开后延时5分钟断开。
function genOfflinePincode(devName, lockMac, basecode, pwdType, startTime, endTime)
- params: >>devName: String类型,锁蓝牙名称 >>lockMac: String类型,锁蓝牙MAC >>basecode: int类型,蓝牙通信加密码
>>pwdType: int类型,离线密码类型,0是限时,1是单次,3是清理密码 >>startTime: Date类型,离线密码生效时间,取本地时钟,例如**为UTC+8时间,忽略即时生效 >>endTime: Date类型,离线密码失效时间,取本地时钟,例如**为UTC+8时间
- return data: >>code: int类型,200表示生成功能,其他失败 >>data: String类型,离线开锁密码或失败信息
注意:若appId或appKey非法,则sdk init不成功,无法成功调用此接口。
蓝牙密码锁WSL_Ox,NB密码锁WSL_Dx,蓝牙指纹锁WSL_Fx,NB指纹锁WSL_Cx系列锁定制指令,请确认您的锁是否支持此部分指令,若不支持,则锁蓝牙指令不会回复。
function queryLockSlotState(devName)
- params: >>devName: String类型,锁蓝牙名称
- return data: >>code: int类型,200表示查询成功,其他失败 >>state: int类型,表示锁方舌状态 0为关闭,1为打开
function queryLockUnlockState(devName)
- params: >>devName: String类型,锁蓝牙名称
- return data: >>code: int类型,200表示查询成功,其他失败 >>state: int类型,表示锁开关状态 0为关闭,1为打开
function setLockUnlockState(devName, isUnlock)
- params: >>devName: String类型,锁蓝牙名称 >>isUnlock: Boolean类型,表示是否常开
- return data: >>code: int类型,200表示查询成功,其他失败 >>state: int类型,表示锁常开状态 0为关闭常开,非0为打开常
function setLockUnlockState(devName, isMuted)
- params: >>devName: String类型,锁蓝牙名称 >>isMuted: Boolean类型,表示是否静音
- return data: >>code: int类型,200表示查询成功,其他失败 >>state: int类型,表示锁静音状态, 0为打开,1为关闭