From 18fd446b074e752385a5c6bcaa23b7228fbd80dd Mon Sep 17 00:00:00 2001 From: liub Date: Mon, 17 Nov 2025 15:30:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90HBY102?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/102/HBY102.vue | 101 ++++++++++++++++++++++--------- pages/common/addBLE/addEquip.vue | 2 +- static/images/common/HBY102.png | Bin 0 -> 34918 bytes utils/BleHelper.js | 30 +++++---- utils/BleReceive.js | 41 ++++++++++++- utils/Common.js | 12 ++++ utils/request.js | 2 +- utils/update.js | 27 ++++++--- 8 files changed, 164 insertions(+), 51 deletions(-) create mode 100644 static/images/common/HBY102.png 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 0000000000000000000000000000000000000000..435eccee37aa4a4b4fc83bd63be71733f97450cf GIT binary patch literal 34918 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

i~UrFa=47|&Iex3Mtkgz<~xHues7;d!5l ze>^jVS-rwfYNNAjgD+qt(?7lGQM0Ueu}-@PIjRFZR4-hc)$#GlnLp>@O0dnZFT_t4 zF~%zJCV+^Mi69db!w~3PbjniVD#7U1LZ+g*IGbe{+fJPY70N^$zsTd8YaZySR$v-N zHZhHGn{!hpS_Fec&c0o@N5|-JFIw2Y$A{G#JRe+CL5|$CkY%#Yv##421(b0v$}f&2 z?5UrFVqudVYvf$0Ydm=ElV9K7Q ze)xuiBbs#d5DRrDa3d*%m=#O|<-+FBVo;`VMwqQJG3=<_<;)nr&SDZD5eaSqR|iOh zDx^XN%HR(l{Fl@Ce=z*v_l{)yi+W301s6W^EJt}A-QC^M<`rMPGb|;kD7Memz<iiWApT4*s;BR4XH8 zWEkqiBM>vZ{m}1)Ya!DTdWXkp6>XupU(`)4z57~=l}5=3u<^+udM{-u|H#tneUClb z=iP~E%>DP19}k~Vr_WQjS0fME3-xWvA5z9F<-ENb!9jV~w^E<|8T-m3OI&7_?O9TE zSs-4_XUHfnjrbZ#h+u5z$>%%Ap5sfJ+!PoGWzlP-U7ZwO&ehwV;a`8x*kbxiM%Y=G zZcUa@kk}PGreuw$Kk%(a7T6Ew2Y9*C?>pOGl(KS;TWcr0NxHY7bZlUIVn&X;ZA(Fg zAGBYe56qXWua)#4%J(r%@$m8*8sSw%^2Yxo?XIVqx|n6Ew-VVG(nR=KW2+_MXVv#h z)#+(YK}*^J3eugbcS}tQ;tg9>B!}?@nW6f_)S;dG%@5y>bW-?hvzXx{rJ~-q0Xw@! zCw^Sszar7$-J*mDi{DukUMyTLh`HkkXrkd6P?&6^r5;?{l(b6q&T||0o+FuKS95ye rPhi7yzl}G28@CjZQ2&<38d|UQw}MIOy(DcG{$u* { 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(); } });