1
0
forked from dyf/APP

完成HBY102

This commit is contained in:
liub
2025-11-17 15:30:57 +08:00
parent cb9ed0b1da
commit 18fd446b07
8 changed files with 164 additions and 51 deletions

View File

@ -9,14 +9,14 @@
<view class="row"> <view class="row">
<image class="img" src="/static/images/6155/DeviceDetail/battry.png" mode="aspectFit"></image> <image class="img" src="/static/images/6155/DeviceDetail/battry.png" mode="aspectFit"></image>
<view class="txt"> <view class="txt">
<view class="bigTxt">{{formData.sta_battery}}%</view> <view class="bigTxt">{{formData.sta_PowerPercent}}%</view>
<view class="smallTxt">电量</view> <view class="smallTxt">电量</view>
</view> </view>
</view> </view>
<view class="row"> <view class="row">
<image class="img" src="/static/images/6155/DeviceDetail/time.png" mode="aspectFit"></image> <image class="img" src="/static/images/6155/DeviceDetail/time.png" mode="aspectFit"></image>
<view class="txt"> <view class="txt">
<view class="bigTxt">{{formData.sta_system?dic.sta_system[formData.sta_system]:"" }}</view> <view class="bigTxt">{{formData.sta_charge?dic.sta_charge[formData.sta_charge]:"" }}</view>
<view class="smallTxt">设备状态</view> <view class="smallTxt">设备状态</view>
</view> </view>
</view> </view>
@ -42,10 +42,18 @@
</view> </view>
<!-- <view class="item"> <!-- <view class="item">
<text class="lbl">设备状态</text> <text class="lbl">设备状态</text>
<text class="value">{{formData.sta_system?dic.sta_system[formData.sta_system]:"" }}</text> <text class="value">{{formData.sta_charge?dic.sta_charge[formData.sta_charge]:"" }}</text>
</view> --> </view> -->
</view> </view>
<view class="warnnig" :class="(formData.sta_Intrusion===1)?'':'displayNone'"
>
<view>闯入报警</view>
<view class="netContent">
{{formData.sta_IntrusTime}}s
</view>
</view>
<view class="lampMode"> <view class="lampMode">
<view class="sosContent"> <view class="sosContent">
<view class="btnSos openSos center" :class="{active:formData.sta_LedType==='led_alarm'}" <view class="btnSos openSos center" :class="{active:formData.sta_LedType==='led_alarm'}"
@ -57,6 +65,9 @@
</view> </view>
</view> </view>
@ -174,15 +185,16 @@
} from '../../utils/request'; } from '../../utils/request';
import Common from '@/utils/Common.js' import Common from '@/utils/Common.js'
const pagePath = "/pages/100/HBY100"; const pagePath = "/pages/102/HBY102";
var ble = null; var ble = null;
var these = null; var these = null;
var recei = null; var recei = null;
var interval = null;
var brightnessTimer = null; var instrusionTime = null;
var volumeTimer = null;
var hzTimer = null;
export default { export default {
data() { data() {
return { return {
@ -240,21 +252,23 @@
usrToggle: false, usrToggle: false,
}, },
formData: { formData: {
img: '/static/images/common/HBY100J.png', img: '/static/images/common/HBY102.png',
sta_battery: '', sta_PowerPercent: '',
xuhang: '', xuhang: '',
blename: '', blename: '',
deviceId: '', deviceId: '',
deviceName: '', deviceName: '',
RSSI: '', RSSI: '',
statu: '', statu: '',
macAddress: '', sta_address: '',
bleStatu: false, bleStatu: false,
sta_LedType: '', sta_LedType: '',
sta_RadarType: '', sta_RadarType: '',
sta_Online: '', sta_Online: '',
warnTime: '' warnTime: '',
sta_Intrusion: 0,
sta_IntrusTime: ''
}, },
dic: { dic: {
@ -317,11 +331,9 @@
group: 'sta_LedType' group: 'sta_LedType'
} }
], ],
sta_system: { sta_charge: {
"0": '关机', "0": '未充电',
"1": '充电', "1": '充电'
"2": '开机未充电',
"3": '开机且充电',
} }
}, },
@ -355,6 +367,8 @@
onUnload() { onUnload() {
console.log("页面卸载,释放资源"); console.log("页面卸载,释放资源");
ble.removeAllCallback(pagePath); ble.removeAllCallback(pagePath);
clearInterval(instrusionTime);
instrusionTime = 0;
}, },
onLoad: function() { onLoad: function() {
these = this; these = this;
@ -407,6 +421,8 @@
ble.LinkBlue(f.deviceId, f.writeServiceId, f.wirteCharactId, f.notifyCharactId).then(res => { ble.LinkBlue(f.deviceId, f.writeServiceId, f.wirteCharactId, f.notifyCharactId).then(res => {
these.formData.bleStatu = true; these.formData.bleStatu = true;
}); });
these.formData.sta_IntrusTime=0;
these.formData.sta_Intrusion=0;
these.setBleFormData(); these.setBleFormData();
@ -536,7 +552,7 @@
reject(); reject();
}); });
}); });
return promise(); return promise;
} }
@ -568,11 +584,11 @@
if (item.key == 'led_alarm' && this.formData.sta_LedType == 'led_alarm') { if (item.key == 'led_alarm' && this.formData.sta_LedType == 'led_alarm') {
return; return;
} }
if (item.key == 'led_off' && this.formData.sta_LedType !== 'led_alarm') { if (item.key == 'led_off' && this.formData.sta_LedType !== 'led_alarm') {
return; return;
} }
let f = this.getDevice(); let f = this.getDevice();
@ -595,8 +611,6 @@
} }
json = JSON.stringify(json); json = JSON.stringify(json);
ble.sendString(f.deviceId, json, f.writeServiceId, f.wirteCharactId, 30).then(res => { ble.sendString(f.deviceId, json, f.writeServiceId, f.wirteCharactId, 30).then(res => {
this.formData.sta_LedType = val; this.formData.sta_LedType = val;
these.setBleFormData(); these.setBleFormData();
resolve(); resolve();
@ -630,7 +644,7 @@
buttonBgColor: "#E03434", buttonBgColor: "#E03434",
okCallback: () => { okCallback: () => {
task(item.key).then(r => { task(item.key).then(r => {
}).catch(ex => { }).catch(ex => {
@ -735,23 +749,50 @@
if (receive.deviceId !== this.formData.deviceId) { if (receive.deviceId !== this.formData.deviceId) {
return; return;
} }
if (this.Status.pageHide) {
return;
}
let json = recei.ReceiveData(receive, device, pagePath, recArr); let json = recei.ReceiveData(receive, device, pagePath, recArr);
console.log("json=",json)
let keys = Object.keys(json); let keys = Object.keys(json);
keys.forEach(key => { keys.forEach(key => {
if (key in this.formData) { if (key in this.formData) {
// console.log("key=",key+",value=",json[key]); console.log("key=",key+",value=",json[key]);
this.formData[key] = json[key] + ""; this.formData[key] = json[key] ;
} }
}); });
let msg = [];
if (this.formData.sta_battery <= 20) { if (this.formData.sta_PowerPercent <= 20) {
this.showMsg("设备电量低"); 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() { getDevice: function() {

View File

@ -328,7 +328,7 @@
these.EquipMents.push(arr[i]); these.EquipMents.push(arr[i]);
} }
} }
console.log("EquipMents=", these.EquipMents) // console.log("EquipMents=", these.EquipMents)
}, pagePath); }, pagePath);
//收到设备的消息回调 //收到设备的消息回调
ble.addReceiveCallback((receivData, f, path, arr) => { ble.addReceiveCallback((receivData, f, path, arr) => {

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -6,6 +6,11 @@ const serviceDic = [ //合作供应商的蓝牙主服务
"writeId": "0000FFE1-0000-1000-8000-00805F9B34FB", "writeId": "0000FFE1-0000-1000-8000-00805F9B34FB",
"notifyId": "0000FFE2-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", "serviceId": "0000AE30-0000-1000-8000-00805F9B34FB",
"writeId": "0000AE03-0000-1000-8000-00805F9B34FB", "writeId": "0000AE03-0000-1000-8000-00805F9B34FB",
@ -638,9 +643,9 @@ class BleHelper {
let arr = []; let arr = [];
for (var i = 0; i < res.devices.length; i++) { for (var i = 0; i < res.devices.length; i++) {
let item = res.devices[i]; let item = res.devices[i];
if(item.name){ // if(item.name){
console.log("发现新设备",item.name+" "+item.RSSI); // console.log("发现新设备",item.name+" "+item.RSSI);
} // }
let f = serviceDic.find(v => { let f = serviceDic.find(v => {
return item.advertisServiceUUIDs return item.advertisServiceUUIDs
@ -648,7 +653,7 @@ class BleHelper {
}); });
if (f) { if (f) {
console.log("发现目标设备:", item); // console.log("发现目标设备:", item);
arr.push(item); arr.push(item);
} }
@ -1203,7 +1208,7 @@ class BleHelper {
deviceId: id, deviceId: id,
success: (res) => { success: (res) => {
if (res.services && res.services.length > 0) { if (res.services && res.services.length > 0) {
// console.log("获取到服务:" + JSON.stringify(res)); console.log("获取到服务:" + JSON.stringify(res));
this.data.LinkedList.find((v) => { this.data.LinkedList.find((v) => {
if (v.deviceId == id) { if (v.deviceId == id) {
@ -1228,7 +1233,7 @@ class BleHelper {
}); });
if (se) { if (se) {
// console.log("合作供应商的", s) console.log("合作供应商的", s)
this.data.LinkedList.find((v) => { this.data.LinkedList.find((v) => {
if (v.deviceId == id) { if (v.deviceId == id) {
v.writeServiceId = s.serviceId; v.writeServiceId = s.serviceId;
@ -1246,7 +1251,9 @@ class BleHelper {
// notifyCharId)); // notifyCharId));
} else { } else
{
console.error("预设的蓝牙服务和特征中找不到"); console.error("预设的蓝牙服务和特征中找不到");
for (var i = 0; i < res.services.length; i++) { for (var i = 0; i < res.services.length; i++) {
let service = res.services[i]; let service = res.services[i];
@ -1266,6 +1273,7 @@ class BleHelper {
Promise.all(promises) Promise.all(promises)
.then(results => { .then(results => {
console.log("results= ",results);
if (!s) { if (!s) {
//非指定供应商的设备,走订阅消息 //非指定供应商的设备,走订阅消息
return this.subScribe(id, true); return this.subScribe(id, true);
@ -1326,10 +1334,10 @@ class BleHelper {
serviceId: serviceId, serviceId: serviceId,
success: (res) => { success: (res) => {
// console.log("获取到特征:" + JSON.stringify(res)); console.log("获取到特征:" + JSON.stringify(res));
// res.characteristics.forEach((v) => { res.characteristics.forEach((v) => {
// v.serviceId = serviceId; v.serviceId = serviceId;
// }); });
//写特征 //写特征
let writeChar = res.characteristics.find(char => { let writeChar = res.characteristics.find(char => {

View File

@ -7,7 +7,8 @@ class BleReceive {
'/pages/650/HBY650': this.Receive_650.bind(this), '/pages/650/HBY650': this.Receive_650.bind(this),
'/pages/670/HBY670': this.Receive_670.bind(this), '/pages/670/HBY670': this.Receive_670.bind(this),
'/pages/4877/BJQ4877': this.Receive_4877.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;
}
} }

View File

@ -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};
}
} }

View File

@ -1,5 +1,5 @@
import config from '../config/index.js'; 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 BASE = config[env];
const request = (options) => { const request = (options) => {
console.log("options"+JSON.stringify(options),BASE.BASE_URL) console.log("options"+JSON.stringify(options),BASE.BASE_URL)

View File

@ -1,7 +1,7 @@
import request, { import request, {
baseURL baseURL
} from '@/utils/request.js' } from '@/utils/request.js'
import Common from '@/utils/Common.js'
/** /**
* 检查并执行wgt热更新 * 检查并执行wgt热更新
* @param {String} updateUrl - 检查更新的接口地址 * @param {String} updateUrl - 检查更新的接口地址
@ -178,10 +178,20 @@ function downloadAndInstallWgt(wgtUrl) {
var wating = plus.nativeUI.showWaiting({ var wating = plus.nativeUI.showWaiting({
title: "下载中0%" 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包 // 1. 下载wgt包
const downloadTask = uni.downloadFile({ const downloadTask = uni.downloadFile({
@ -219,20 +229,22 @@ function downloadAndInstallWgt(wgtUrl) {
wating.close(); wating.close();
uni.showToast({ uni.showToast({
title: '安装失败: ' + error.message, title: '安装失败,请手动下载更新;' + error.message,
icon: 'none', icon: 'none',
duration: 3000 duration: 3000
}); });
console.error('wgt安装失败:', error); console.error('wgt安装失败:', error);
ManualUpdate();
}); });
} else { } else {
wating.close(); wating.close();
uni.showToast({ uni.showToast({
title: '下载失败', title: '下载失败,请手动下载更新;',
icon: 'none', icon: 'none',
duration: 2000 duration: 2000
}); });
ManualUpdate();
} }
}, },
fail: (err) => { fail: (err) => {
@ -243,6 +255,7 @@ function downloadAndInstallWgt(wgtUrl) {
duration: 2000 duration: 2000
}); });
console.error('wgt下载失败:', err); console.error('wgt下载失败:', err);
ManualUpdate();
} }
}); });