|
|
- const config = require('../config')
- const util = require('./util1.js')
- const plugin = requirePlugin("myPlugin")
- var isConnected = false
- var basecode = 29283991
- class LwJ{
- constructor(lockDevice,isConnected,connectedDeviceId,isInitReady,lockModel){
- this.isConnected = isConnected
- this.lockDevice = lockDevice
- this.connectedDeviceId = connectedDeviceId
- this.isInitReady = isInitReady
- this.lockModel = lockModel
- this.taskId = 0
- this.isJack = false
- }
- getData(){
- return {
- isConnected:this.isConnected,
- isConnected:this.lockDevice,
- isConnected:this.connectedDeviceId,
- isConnected:this.isInitReady,
- isConnected:this.lockModel,
- isConnected:this.taskId
- }
- }
- initBluetooth () {
- var that = this
- wx.getConnectedBluetoothDevices({
- services: [config.uuid.serviceUuid],
- success: function (res) {
- res.devices.map(function (it) {
- if (it.deviceId == connectedDeviceId || it.name == name) {
- this.isConnected = true
- }
- })
-
- // that.setData({
- // isConnected: this.isConnected
- // })
- console.log('isConnected', isConnected)
- if (isConnected) {
- if (that.isInitReady) {
- that.doWork()
- } else {
- that.setupConnection()
- }
- } else {
- that.connectTo()
- }
- },
- })
- }
- connectTo () {
- var that = this
- wx.showLoading({
- title: '连接中',
- })
- wx.createBLEConnection({
- deviceId: this.lockDevice.deviceId,
- timeout: config.ble.connectTimeOut,
- success: function (res) {
- console.debug('connectTo', res)
- isConnected = true
- wx.hideLoading()
- setTimeout(function () {
- that.setupConnection()
- }, 500)
- },
- fail: function (e) {
- console.debug('connectTo', e)
- wx.hideLoading()
- switch (e.errCode) {
- case 10003: {
- wx.showModal({
- title: '连接失败',
- content: '是否重新连接?',
- success: function (res) {
- if (res.confirm) {
- that.connectTo()
- }
- }
- })
- break
- }
- case 10012: {
- wx.showModal({
- title: '连接失败',
- content: '蓝牙连接超时',
- showCancel: false
- })
- break
- }
- case 10002: {
- wx.showModal({
- title: '连接失败',
- content: '没有找到指定设备',
- showCancel: false
- })
- break
- }
- }
- }
- })
- }
- setupConnection () {
- var that = this
- wx.showLoading({
- title: '初始化连接中',
- })
- wx.getBLEDeviceServices({
- deviceId: that.lockDevice.deviceId,
- success: function (res) {
- console.log('Services', res)
- wx.getBLEDeviceCharacteristics({
- deviceId: that.lockDevice.deviceId,
- serviceId: config.uuid.serviceUuid.toUpperCase(),
- success: function (res) {
- console.log('Characteristics', res)
- wx.onBLECharacteristicValueChange(function (res) {
- var bytes = new Uint8Array(res.value)
- console.log('bytes', bytes)
- var data = plugin.parseBytes(that.lockDevice.name, basecode, bytes)
- console.log('data', data)
- switch (data.cmd) {
- case 'reportLockBattery': {
- if (data.data.battery < 10) {
- wx.showModal({
- title: '电量报警',
- content: `门锁当前电量${data.data.battery}%!\n电量严重不足,请立即更换电池!`,
- showCancel: false
- })
- } else if (data.data.battery < 30) {
- wx.showModal({
- title: '电量预警',
- content: `门锁当前电量${data.data.battery}%!\n请及时更换电池!`,
- showCancel: false
- })
- }
- break
- }
- case 'reportRfCardResult': {
- if (that.taskId == 61) {
- wx.showModal({
- title: '检测到新卡',
- content: `是否添加此房卡,卡号:${data.data.cardId}?`,
- success: function (res) {
- if (res.confirm) {
- rfCardId = data.data.cardId
- that.onAddRfCard()
- }
- }
- })
- } else {
- if (that.lockModel > 70) {
- if (data.data.isValid) {
- wx.showModal({
- title: '提示',
- content: `房卡开锁成功,序号:${data.data.index}!`,
- showCancel: false
- })
- } else {
- wx.showModal({
- title: '提示',
- content: `多次刷房卡开锁失败!`,
- showCancel: false
- })
- }
- } else {
- if (data.data.isValid) {
- wx.showModal({
- title: '提示',
- content: `房卡开锁成功,卡号:${data.data.cardId}!`,
- showCancel: false
- })
- } else {
- wx.showModal({
- title: '提示',
- content: `房卡未授权,卡号:${data.data.cardId}!`,
- showCancel: false
- })
- }
- }
- }
- break
- }
- case 'reportPincodeResult': {
- if (that.lockModel > 70) {
- if (data.data.isValid) {
- wx.showModal({
- title: '提示',
- content: `密码开锁成功,序号:${data.data.index}!`,
- showCancel: false
- })
- } else {
- wx.showModal({
- title: '提示',
- content: `多次密码开锁失败!`,
- showCancel: false
- })
- }
- } else {
- if (data.data.isValid) {
- wx.showModal({
- title: '提示',
- content: `密码:${data.data.pincode}开锁成功!`,
- showCancel: false
- })
- } else {
- wx.showModal({
- title: '提示',
- content: `密码:${data.data.pincode}未授权!`,
- showCancel: false
- })
- }
- }
- break
- }
- case 'reportFingerprintResult': {
- if (data.data.isValid) {
- wx.showModal({
- title: '提示',
- content: `指纹开锁成功,序号:${data.data.index}!`,
- showCancel: false
- })
- } else {
- wx.showModal({
- title: '提示',
- content: `多次指纹开锁失败!`,
- showCancel: false
- })
- }
- break
- }
- case 'queryLockState': {
- wx.hideLoading()
- if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '查询失败!',
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- // that.setData({
- // lock: {
- // mac: data.data.mac,
- // lockType: util.getLockType(that.lockModel),
- // },
- // isBindLock: data.data.isBind
- // })
- // lockMac = data.data.mac
-
- if (that.taskId > 0) {
- if (data.data.isBind) {
- wx.showModal({
- title: data.data.mac,
- content: '此设备已经硬件绑定!',
- showCancel: false,
- success: function (res) {}
- })
- } else {
- wx.showModal({
- title: data.data.mac,
- content: '此设备硬件未绑定!',
- showCancel: false,
- success: function (res) {}
- })
- }
- }
- that.taskId = 0
- break
- }
- case 'queryLockBattery': {
- wx.hideLoading()
- if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '查询失败!',
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- wx.showModal({
- title: '提示',
- content: `此门锁电量为${data.data.battery}%`,
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- case 'queryNbImei': {
- wx.hideLoading()
- if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '查询失败!',
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- wx.showModal({
- title: '提示',
- content: `此NB设备IMEI为${data.data.imei}`,
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- case 'setNbFun': {
- wx.hideLoading()
- if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '设置Nb功能失败!',
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- wx.showModal({
- title: '提示',
- content: that.data.isNbEnable ? 'NB功能已禁用' : 'NB功能已打开',
- showCancel: false,
- })
- that.setData({
- isNbEnable: !that.data.isNbEnable
- })
- break
- }
- case 'sendBindLock': {
- wx.hideLoading()
- if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '绑定失败!',
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- that.setData({
- isBindLock: data.data.isBind
- })
- if (data.data.isBind) {
- wx.showToast({
- title: '绑定成功!',
- })
- } else {
- wx.showToast({
- title: '绑定失败!',
- })
- }
- break
- }
-
- case 'sendUnbindLock': {
- wx.hideLoading()
- if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '解绑失败!',
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- that.setData({
- isBindLock: data.data.isBind
- })
- if (data.data.isBind) {
- wx.showToast({
- title: '解绑失败!',
- })
- } else {
- wx.showToast({
- title: '解绑成功!',
- })
- }
- break
- }
- case 'login1':
- case 'sendOpenLockP1': {
- if (data.code != 200) {
- wx.hideLoading()
- if (that.taskId == 41) {
- wx.showModal({
- title: '提示',
- content: that.data.isJack ? '上电失败!' : '解锁失败!',
- showCancel: false,
- success: function (res) {}
- })
- } else if (that.taskId == 32) {
- wx.showModal({
- title: '提示',
- content: '登录失败!',
- showCancel: false,
- success: function (res) {}
- })
- }
-
- break
- }
- if (that.taskId == 41) {
- var bytes = plugin.sendOpenLockP2(that.lockDevice.name, basecode, data.data.randomN)
- console.debug('bytes', bytes)
- that.sendBytes(bytes)
- } else if (that.taskId == 32) {
- var bytes = plugin.login2(that.lockDevice.name, basecode, data.data.randomN)
- console.debug('bytes', bytes)
- that.sendBytes(bytes)
- }
- break;
- }
- case 'login':
- case 'sendOpenLockP2': {
- wx.hideLoading()
- if (data.code != 200) {
- if (that.taskId == 41) {
- wx.showModal({
- title: '提示',
- content: that.data.isJack ? '上电失败!' : '解锁失败!',
- showCancel: false,
- success: function (res) {}
- })
- } else if (that.taskId == 32) {
- wx.showModal({
- title: '提示',
- content: '登录失败!',
- showCancel: false,
- success: function (res) {}
- })
- }
- break
- }
-
- isLockLogin = true
- if (that.taskId == 41) {
- wx.showToast({
- title: that.data.isJack ? '上电成功!' : '解锁成功!',
- })
- } else if (that.taskId == 32) {
- wx.showToast({
- title: '登录成功!',
- })
- }
- that.taskId = 0
- break;
- }
-
- case 'syncClock': {
- wx.hideLoading()
- if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '同步时间失败!' + data.data.msg,
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- wx.showModal({
- title: '提示',
- content: '时间更新成功!',
- showCancel: false
- })
- break;
- }
- case 'addPincode': {
- wx.hideLoading()
- if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '添加密码失败!' + data.data.msg,
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- that.setData({
- isPincodeAdd: true
- })
- wx.showModal({
- title: '提示',
- content: `添加密码${pincode}成功!`,
- showCancel: false
- })
- break
- }
-
- case 'delPincode': {
- wx.hideLoading()
- if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '删除密码失败!',
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- wx.showModal({
- title: '提示',
- content: `删除密码${pincode}成功!`,
- showCancel: false,
- })
- that.setData({
- isPincodeAdd: false
- })
- pincode = -1
- pincodeIndex = -1
- break
- }
-
- case 'addRfCard': {
- wx.hideLoading()
- if (data.code == 100) {
- wx.showLoading({
- title: data.data.msg,
- })
- break
- } else if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '添加房卡失败!' + data.data.msg,
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- that.setData({
- isRfCardAdd: true
- })
- if (that.lockModel > 70) {
- wx.showModal({
- title: '提示',
- content: `添加房卡成功,序号${rfCardIndex}!`,
- showCancel: false
- })
- } else {
- wx.showModal({
- title: '提示',
- content: `添加房卡成功,卡号${rfCardId}!`,
- showCancel: false
- })
- }
- break
- }
-
- case 'delRfCard': {
- wx.hideLoading()
- if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '删除房卡失败!',
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- that.setData({
- isRfCardAdd: false
- })
- if (that.lockModel > 70) {
- wx.showModal({
- title: '提示',
- content: `删除房卡成功,序号${rfCardIndex}!`,
- showCancel: false,
- })
- } else {
- wx.showModal({
- title: '提示',
- content: `删除房卡成功,卡号${rfCardId}!`,
- showCancel: false,
- })
- }
- rfCardId = -1
- rfCardIndex = -1
- break
- }
-
- case 'addFingerprint': {
- wx.hideLoading()
- if (data.code == 100) {
- wx.showLoading({
- title: data.data.msg,
- })
- break
- } else if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '添加指纹失败!' + data.data.msg,
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- that.setData({
- isFingerprintAdd: true
- })
- wx.showModal({
- title: '提示',
- content: `添加指纹成功,序号${fingerprintIndex}!`,
- showCancel: false
- })
- break
- }
-
- case 'delFingerprint': {
- wx.hideLoading()
- if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '删除指纹失败!',
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- wx.showModal({
- title: '提示',
- content: `删除指纹成功,序号${fingerprintIndex}!`,
- showCancel: false,
- })
- that.setData({
- isFingerprintAdd: false
- })
- fingerprintIndex = -1
- break
- }
-
- case 'changeAdminPincode': {
- wx.hideLoading()
- if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '修改管理密码失败!',
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- wx.showToast({
- title: '修改管理密码成功!',
- })
- }
-
- case 'queryLockSlotState': {
- wx.hideLoading()
- if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '查询失败!',
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- wx.showModal({
- title: '提示',
- content: data.data.state == 0 ? '此门锁方舌关闭' : '此门锁方舌打开',
- showCancel: false,
- success: function (res) {}
- })
- break
- }
-
- case 'queryLockUnlockState': {
- wx.hideLoading()
- if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '查询失败!',
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- wx.showModal({
- title: '提示',
- content: data.data.state == 0 ? '此门锁已关闭' : '此门锁已打开',
- showCancel: false,
- success: function (res) {}
- })
- break
- }
-
- case 'setLockUnlockState': {
- wx.hideLoading()
- if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '设置常开指令失败!',
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- wx.showModal({
- title: '提示',
- content: data.data.state == 0 ? '常开模式已退出' : '常开模式已开启',
- showCancel: false,
- })
- that.setData({
- isUnloked: data.data.state == 1
- })
- break
- }
-
- case 'setLockMuteState': {
- wx.hideLoading()
- if (data.code != 200) {
- wx.showModal({
- title: '提示',
- content: '设置静音指令失败!',
- showCancel: false,
- success: function (res) {}
- })
- break
- }
- that.taskId = 0
- wx.showModal({
- title: '提示',
- content: data.data.state == 1 ? '静音模式已退出' : '静音模式已开启',
- showCancel: false,
- })
- that.setData({
- isMuted: data.data.state == 0
- })
- break
- }
- }
- })
-
- wx.notifyBLECharacteristicValueChange({
- deviceId: that.lockDevice.deviceId,
- serviceId: config.uuid.serviceUuid.toUpperCase(),
- characteristicId: config.uuid.notifyUuid.toUpperCase(),
- state: true,
- success: function (res) {
- console.log('setupNotify', res)
- that.isInitReady = true
- setTimeout(function () {
- wx.hideLoading()
- that.onQueryBindState()
- }, 500)
- },
- })
- },
- })
- },
- })
- }
- onQueryBindState () {
- var that = this
- wx.showLoading({
- title: '查询中',
- })
-
- var bytes = plugin.queryLockState(this.lockDevice.name)
- console.debug('bytes', bytes)
- that.sendBytes(bytes)
- }
- openLock (taskId) {
- var that = this
- this.taskId = taskId
- wx.showLoading({
- title: that.isJack ? '上电中' : '解锁中',
- })
- var bytes = plugin.sendOpenLockP1(that.lockDevice.name, basecode)
- console.debug('bytes', bytes)
- that.sendBytes(bytes)
- }
- sendBytes(bytes) {
- var that = this
- setTimeout(function () {
- wx.writeBLECharacteristicValue({
- deviceId: that.lockDevice.deviceId,
- serviceId: config.uuid.serviceUuid.toUpperCase(),
- characteristicId: config.uuid.writeUuid.toUpperCase(),
- value: bytes,
- success: function (res) {
-
- },
- })
- }, 50)
- }
- }
- module.exports = LwJ
|