diff --git a/pages/102/HBY102.vue b/pages/102/HBY102.vue index ec3b20e..50dbec5 100644 --- a/pages/102/HBY102.vue +++ b/pages/102/HBY102.vue @@ -9,14 +9,14 @@ - {{formData.sta_battery}}% + {{formData.sta_PowerPercent}}% 电量 - {{formData.sta_system?dic.sta_system[formData.sta_system]:"" }} + {{formData.sta_charge?dic.sta_charge[formData.sta_charge]:"" }} 设备状态 @@ -42,10 +42,18 @@ - + + + 闯入报警! + + {{formData.sta_IntrusTime}}s + + + + + + @@ -174,15 +185,16 @@ } from '../../utils/request'; import Common from '@/utils/Common.js' - const pagePath = "/pages/100/HBY100"; + const pagePath = "/pages/102/HBY102"; var ble = null; var these = null; var recei = null; - var interval = null; - var brightnessTimer = null; - var volumeTimer = null; - var hzTimer = null; + + var instrusionTime = null; + + + export default { data() { return { @@ -240,21 +252,23 @@ usrToggle: false, }, formData: { - img: '/static/images/common/HBY100J.png', - sta_battery: '', + img: '/static/images/common/HBY102.png', + sta_PowerPercent: '', xuhang: '', blename: '', deviceId: '', deviceName: '', RSSI: '', statu: '', - macAddress: '', + sta_address: '', bleStatu: false, sta_LedType: '', sta_RadarType: '', sta_Online: '', - warnTime: '' + warnTime: '', + sta_Intrusion: 0, + sta_IntrusTime: '' }, dic: { @@ -317,11 +331,9 @@ group: 'sta_LedType' } ], - sta_system: { - "0": '关机', - "1": '仅充电', - "2": '开机未充电', - "3": '开机且充电', + sta_charge: { + "0": '未充电', + "1": '充电中' } }, @@ -355,6 +367,8 @@ onUnload() { console.log("页面卸载,释放资源"); ble.removeAllCallback(pagePath); + clearInterval(instrusionTime); + instrusionTime = 0; }, onLoad: function() { these = this; @@ -407,6 +421,8 @@ ble.LinkBlue(f.deviceId, f.writeServiceId, f.wirteCharactId, f.notifyCharactId).then(res => { these.formData.bleStatu = true; }); + these.formData.sta_IntrusTime=0; + these.formData.sta_Intrusion=0; these.setBleFormData(); @@ -536,7 +552,7 @@ reject(); }); }); - return promise(); + return promise; } @@ -568,11 +584,11 @@ if (item.key == 'led_alarm' && this.formData.sta_LedType == 'led_alarm') { return; } - + if (item.key == 'led_off' && this.formData.sta_LedType !== 'led_alarm') { return; } - + let f = this.getDevice(); @@ -595,8 +611,6 @@ } json = JSON.stringify(json); ble.sendString(f.deviceId, json, f.writeServiceId, f.wirteCharactId, 30).then(res => { - - this.formData.sta_LedType = val; these.setBleFormData(); resolve(); @@ -630,7 +644,7 @@ buttonBgColor: "#E03434", okCallback: () => { task(item.key).then(r => { - + }).catch(ex => { @@ -735,23 +749,50 @@ if (receive.deviceId !== this.formData.deviceId) { return; } + if (this.Status.pageHide) { + return; + } let json = recei.ReceiveData(receive, device, pagePath, recArr); - + console.log("json=",json) let keys = Object.keys(json); keys.forEach(key => { if (key in this.formData) { - // console.log("key=",key+",value=",json[key]); - this.formData[key] = json[key] + ""; + console.log("key=",key+",value=",json[key]); + this.formData[key] = json[key] ; } }); - - if (this.formData.sta_battery <= 20) { - this.showMsg("设备电量低"); + let msg = []; + if (this.formData.sta_PowerPercent <= 20) { + msg.push("设备电量低"); } + + if (this.formData.sta_Intrusion === 1) { + msg.push("闯入报警中"); + clearInterval(instrusionTime); + instrusionTime = 0; + setInterval(() => { + instrusionTime++; + if(instrusionTime>60){ + this.formData.sta_Intrusion=0; + clearInterval(instrusionTime); + return; + } + this.formData.sta_IntrusTime=instrusionTime; + }, 1000); + }else{ + clearInterval(instrusionTime); + instrusionTime=0; + this.formData.sta_IntrusTime=0; + } + if (msg.length > 0) { + this.showMsg(msg.join(',')); + } + + }, getDevice: function() { diff --git a/pages/common/addBLE/addEquip.vue b/pages/common/addBLE/addEquip.vue index 10d08c9..ec60d6f 100644 --- a/pages/common/addBLE/addEquip.vue +++ b/pages/common/addBLE/addEquip.vue @@ -328,7 +328,7 @@ these.EquipMents.push(arr[i]); } } - console.log("EquipMents=", these.EquipMents) + // console.log("EquipMents=", these.EquipMents) }, pagePath); //收到设备的消息回调 ble.addReceiveCallback((receivData, f, path, arr) => { diff --git a/static/images/common/HBY102.png b/static/images/common/HBY102.png new file mode 100644 index 0000000..435ecce Binary files /dev/null and b/static/images/common/HBY102.png differ diff --git a/utils/BleHelper.js b/utils/BleHelper.js index e12692a..646ac35 100644 --- a/utils/BleHelper.js +++ b/utils/BleHelper.js @@ -6,6 +6,11 @@ const serviceDic = [ //合作供应商的蓝牙主服务 "writeId": "0000FFE1-0000-1000-8000-00805F9B34FB", "notifyId": "0000FFE2-0000-1000-8000-00805F9B34FB" }, + { + "serviceId": "0000FFF0-0000-1000-8000-00805F9B34FB", + "writeId": "0000FFF2-0000-1000-8000-00805F9B34FB", + "notifyId": "0000FFF1-0000-1000-8000-00805F9B34FB" + }, { "serviceId": "0000AE30-0000-1000-8000-00805F9B34FB", "writeId": "0000AE03-0000-1000-8000-00805F9B34FB", @@ -638,9 +643,9 @@ class BleHelper { let arr = []; for (var i = 0; i < res.devices.length; i++) { let item = res.devices[i]; - if(item.name){ - console.log("发现新设备",item.name+" "+item.RSSI); - } + // if(item.name){ + // console.log("发现新设备",item.name+" "+item.RSSI); + // } let f = serviceDic.find(v => { return item.advertisServiceUUIDs @@ -648,7 +653,7 @@ class BleHelper { }); if (f) { - console.log("发现目标设备:", item); + // console.log("发现目标设备:", item); arr.push(item); } @@ -1203,7 +1208,7 @@ class BleHelper { deviceId: id, success: (res) => { if (res.services && res.services.length > 0) { - // console.log("获取到服务:" + JSON.stringify(res)); + console.log("获取到服务:" + JSON.stringify(res)); this.data.LinkedList.find((v) => { if (v.deviceId == id) { @@ -1228,7 +1233,7 @@ class BleHelper { }); if (se) { - // console.log("合作供应商的", s) + console.log("合作供应商的", s) this.data.LinkedList.find((v) => { if (v.deviceId == id) { v.writeServiceId = s.serviceId; @@ -1246,7 +1251,9 @@ class BleHelper { // notifyCharId)); - } else { + } else + + { console.error("预设的蓝牙服务和特征中找不到"); for (var i = 0; i < res.services.length; i++) { let service = res.services[i]; @@ -1266,6 +1273,7 @@ class BleHelper { Promise.all(promises) .then(results => { + console.log("results= ",results); if (!s) { //非指定供应商的设备,走订阅消息 return this.subScribe(id, true); @@ -1326,10 +1334,10 @@ class BleHelper { serviceId: serviceId, success: (res) => { - // console.log("获取到特征:" + JSON.stringify(res)); - // res.characteristics.forEach((v) => { - // v.serviceId = serviceId; - // }); + console.log("获取到特征:" + JSON.stringify(res)); + res.characteristics.forEach((v) => { + v.serviceId = serviceId; + }); //写特征 let writeChar = res.characteristics.find(char => { diff --git a/utils/BleReceive.js b/utils/BleReceive.js index 81cd560..179cf98 100644 --- a/utils/BleReceive.js +++ b/utils/BleReceive.js @@ -7,7 +7,8 @@ class BleReceive { '/pages/650/HBY650': this.Receive_650.bind(this), '/pages/670/HBY670': this.Receive_670.bind(this), '/pages/4877/BJQ4877': this.Receive_4877.bind(this), - '/pages/100/HBY100': this.Receive_100.bind(this) + '/pages/100/HBY100': this.Receive_100.bind(this), + '/pages/102/HBY102':this.Receive_102.bind(this) }; } @@ -560,6 +561,44 @@ class BleReceive { } + + Receive_102(receive,f,path,recArr){ + let receiveData={}; + + try { + + console.log("str=",receive.str); + receiveData = JSON.parse(receive.str); + + let recCnt = recArr.find(v => { + return v.key.replace(/\//g, "").toLowerCase() == f.device.detailPageUrl + .replace(/\//g, "").toLowerCase(); + }); + if (!recCnt) { + if (receiveData.sta_PowerPercent<=20) { + uni.showModal({ + title: "提示", + content: "设备电量低", + showCancel: false + }); + } + if (receiveData.sta_Intrusion===1) { + uni.showModal({ + title: "提示", + content: "闯入报警中", + showCancel: false + }); + } + + } + } catch (error) { + receiveData = {}; + console.log("文本解析失败",error) + } + return receiveData; + + } + } diff --git a/utils/Common.js b/utils/Common.js index 5b95b4d..2d4a80d 100644 --- a/utils/Common.js +++ b/utils/Common.js @@ -363,4 +363,16 @@ export default { }); }, + getOSAndUpload(){ + let os=uni.getSystemInfoSync().platform; + let url='' + if(os==='ios'){ + url='https://apps.apple.com/cn/app/星汉物联/id6752555460' + } + + else if(os==='android'){ + url='https://www.pgyer.com/xhwl'; + } + return {os:os,url:url}; + } } \ No newline at end of file diff --git a/utils/request.js b/utils/request.js index 681b921..db503ab 100644 --- a/utils/request.js +++ b/utils/request.js @@ -1,5 +1,5 @@ import config from '../config/index.js'; -export const env = 'production'; //production development //开发of线上 改这里就行 +export const env = 'development'; //production development //开发of线上 改这里就行 const BASE = config[env]; const request = (options) => { console.log("options"+JSON.stringify(options),BASE.BASE_URL) diff --git a/utils/update.js b/utils/update.js index dbb7dee..100ac32 100644 --- a/utils/update.js +++ b/utils/update.js @@ -1,7 +1,7 @@ import request, { baseURL } from '@/utils/request.js' - +import Common from '@/utils/Common.js' /** * 检查并执行wgt热更新 * @param {String} updateUrl - 检查更新的接口地址 @@ -178,10 +178,20 @@ function downloadAndInstallWgt(wgtUrl) { var wating = plus.nativeUI.showWaiting({ title: "下载中0%" }); - // uni.showLoading({ - // title: '更新下载中...', - // mask: true - // }); + + //手动更新 + let ManualUpdate=()=>{ + setTimeout(()=>{ + + let url=Common.getOSAndUpload().url + plus.runtime.openURL(url, (res) => { + uni.showToast({ + title: '打开失败', + icon: 'none' + }); + }); + },1000); + } // 1. 下载wgt包 const downloadTask = uni.downloadFile({ @@ -219,20 +229,22 @@ function downloadAndInstallWgt(wgtUrl) { wating.close(); uni.showToast({ - title: '安装失败: ' + error.message, + title: '安装失败,请手动下载更新;' + error.message, icon: 'none', duration: 3000 }); console.error('wgt安装失败:', error); + ManualUpdate(); }); } else { wating.close(); uni.showToast({ - title: '下载失败', + title: '下载失败,请手动下载更新;', icon: 'none', duration: 2000 }); + ManualUpdate(); } }, fail: (err) => { @@ -243,6 +255,7 @@ function downloadAndInstallWgt(wgtUrl) { duration: 2000 }); console.error('wgt下载失败:', err); + ManualUpdate(); } });