diff --git a/pages/6170/deviceControl/index.vue b/pages/6170/deviceControl/index.vue
index 04b3c39..067425d 100644
--- a/pages/6170/deviceControl/index.vue
+++ b/pages/6170/deviceControl/index.vue
@@ -58,6 +58,12 @@
{{getbleStatu}}
+
+ 充电状态
+
+ {{deviceInfo.chargeState != 0?'充电中':'未充电'}}
+
+
定位信息
@@ -73,7 +79,7 @@
-
+
设备强制报警中
{
+ if (this.deviceInfo.batteryPercentage < 20 &&
+ this.deviceInfo.chargeState == 0) {
+ this.popupType = 'bettery';
+ this.popupMessage = '请及时充电';
+ this.showPopupFlag = true;
+ }
+ if (this.apiType === 'listA') {
+ this.fetchDeviceDetail(data.data.id)
+ } else {
+ // 分享权限详情
+ this.fetchSharedDeviceDetail(data.data.id)
+ }
+ }, 10000);
+ // 上报电量,在列表里面同步
+ uni.$emit('deviceStatusUpdate', {
+ message: parsedMessage,
+ timestamp: new Date().getTime()
+ });
+ break;
+ default:
+ console.log('未知的 deviceState 类型:', deviceState[0]);
+ }
+ },
bleStatuToggle() {
let f = this.getDevice();
if (!f) {
@@ -532,11 +584,9 @@
}
let data = rec.ReceiveData(receive, device, pagePath, recArr);
console.log("蓝牙收到消息", data)
- this.receivData(data);
- },
- receivData(data) {
-
+ this.onReceive(data.state);
},
+
bleStateBreak() {
if (this.Status.pageHide) {
return;
@@ -1566,6 +1616,7 @@
// this.popupConfirmText="";
},
OpenWarn(val){//开启/解除强制报警
+ debugger;
const topic = `B/${this.itemInfo.deviceImei}`;
let message={"instruct":[7,val,0,0,0,0]};
message=JSON.stringify(message);
@@ -1575,6 +1626,8 @@
});
if(flag){
this.itemInfo.alarmStatus=val;
+ }else{
+ MsgError("操作没有成功",'确定',this);
}
this.showPopupFlag = false;
@@ -1644,11 +1697,11 @@
// 3.解除告警状态
const registerRes = await deviceSendAlarmMessage(data);
if (registerRes.code !== 200) {
- uni.showToast({
- title: registerRes.msg,
- icon: 'none'
- })
-
+ // uni.showToast({
+ // title: registerRes.msg,
+ // icon: 'none'
+ // })
+ this.OpenWarn(0);
return
}
this.itemInfo.alarmStatus=0;
@@ -1908,53 +1961,8 @@
const deviceState = parsedMessage.state; // 直接取 state 数组
// 切换主灯光模式,亮度值设备同步
if (!deviceState) return;
- // 1设备切换灯光实时返回
- switch (deviceState[0]) {
- case 1:
- this.currentMainMode = this.getMainLightModeLabel(
- deviceState[
- 1]);
- this.sliderValue = deviceState[2];
- this.deviceInfo.batteryRemainingTime = deviceState[3];
- break;
- // 12为设备实时上报
- case 12:
- this.currentMainMode = this.getMainLightModeLabel(
- deviceState[
- 1]);
- this.isLaserOn = deviceState[2] === 1; //第3位表示当时激光灯档位
- this.currentlaserMode = this.isLaserOn ? "开启" : "关闭";
- if (this.deviceInfo) {
- this.deviceInfo.batteryPercentage = deviceState[
- 3]; //第4位电量百分比
- this.deviceInfo.chargeState = deviceState[
- 4]; //第5位为充电状态(0没有充电,1正在充电,2为已充满)
- this.deviceInfo.batteryRemainingTime = deviceState[
- 5]; //第6位200代表电池剩余续航时间200分钟
- }
- setTimeout(() => {
- if (this.deviceInfo.batteryPercentage < 20 &&
- this.deviceInfo.chargeState == 0) {
- this.popupType = 'bettery';
- this.popupMessage = '请及时充电';
- this.showPopupFlag = true;
- }
- if (this.apiType === 'listA') {
- this.fetchDeviceDetail(data.data.id)
- } else {
- // 分享权限详情
- this.fetchSharedDeviceDetail(data.data.id)
- }
- }, 10000);
- // 上报电量,在列表里面同步
- uni.$emit('deviceStatusUpdate', {
- message: parsedMessage,
- timestamp: new Date().getTime()
- });
- break;
- default:
- console.log('未知的 deviceState 类型:', deviceState[0]);
- }
+
+ this.onReceive(deviceState);
} catch (error) {
console.log('解析MQTT消息失败:', error, '原始消息:', payload);
}
diff --git a/pages/common/addDevice/addBle.vue b/pages/common/addDevice/addBle.vue
index d963791..bddf46d 100644
--- a/pages/common/addDevice/addBle.vue
+++ b/pages/common/addDevice/addBle.vue
@@ -482,20 +482,20 @@
ble.addStateBreakCallback(() => {
- uni.showModal({
- title: '提示',
- content: '蓝牙不可用'
- });
+
+
+ MsgError('蓝牙不可用','',these);
these.EquipMents.filter((v, i) => {
these.$set(these.EquipMents[i], 'link', false);
});
}, pagePath);
ble.addStateRecoveryCallback(() => {
- uni.showModal({
- title: '提示',
- content: '蓝牙恢复可用'
- });
+
+
+ MsgSuccess('蓝牙恢复可用','',these,()=>{
+ MsgClear(these);
+ })
},
pagePath);
@@ -568,7 +568,7 @@
plus.runtime.openURL('weixin://', (err) => {
- MsgError("打开微信失败,请手动打开微信粘贴");
+ MsgError("打开微信失败,请手动打开微信,发送至'文件传输助手'");
});
},
fail(ex){
@@ -805,10 +805,8 @@
let json = getUrlParams(res.result);
if (!json.key) {
- uni.showModal({
- title: '错误',
- content: "无效的二维码"
- })
+
+ MsgError('无效的二维码','',these);
return;
}
this.scanKey = json.key;
@@ -1050,9 +1048,8 @@
these.sendEquipToMq();
}).catch(ex => {
console.log("ex=", ex)
- uni.showModal({
- content: "连接失败:" + ex.msg
- });
+
+ MsgError("连接失败:" + ex.msg,'',these);
hideLoading(these);
});
}
diff --git a/pages/common/index/index.vue b/pages/common/index/index.vue
index 1fbee95..d9dc6cd 100644
--- a/pages/common/index/index.vue
+++ b/pages/common/index/index.vue
@@ -134,6 +134,9 @@
+
+
+
@@ -772,7 +775,8 @@
this.downCallback();
});
ble = bleTool.getBleTool();
- recei = BleReceive.getBleReceive();
+ console.log("this=",this);
+ recei = BleReceive.getBleReceive(this);
//蓝牙连接成功的回调
ble.addRecoveryCallback((res) => {
// console.log("蓝牙连接成功的回调");
@@ -799,8 +803,9 @@
//接收到消息的回调
ble.addReceiveCallback((receive, device, path, recArr) => {
- // console.error("首页收到消息了");
- recei.ReceiveData(receive, device, path, recArr);
+ console.error("首页收到消息了");
+ let json=recei.ReceiveData(receive, device, path, recArr);
+ console.error("消息内容",json);
this.updateBleStatu();
}, pagePath);
diff --git a/utils/BleHelper.js b/utils/BleHelper.js
index c531e02..77abe9c 100644
--- a/utils/BleHelper.js
+++ b/utils/BleHelper.js
@@ -22,9 +22,6 @@ const serviceDic = [ //合作供应商的蓝牙主服务
class BleHelper {
constructor() {
this.StorageKey = "linkedDevices";
-
- recei = receivTool.getBleReceive();
-
this.init();
}
init() {
@@ -41,16 +38,12 @@ class BleHelper {
if (!v) return false;
v.Linked = false;
v.notifyState = false;
- return !!v.device;
+ return v.device;
});
}
-
const systemInfo = uni.getSystemInfoSync();
-
-
-
this.data = {
isOpenBlue: false, //蓝牙模块是否开启
available: false, //蓝牙状态是否可用
@@ -71,17 +64,7 @@ class BleHelper {
stateRecoveryCallback: [], //蓝牙适配器恢复可用事件
stateBreakCallback: [] //蓝牙适配器不可用事件
}
- //蓝牙模块不再订阅,改到首页订阅
- // this.addReceiveCallback((receive, f, path, recArr) => {
- // recei.ReceiveData(receive, f, path, recArr);
- // }, "BleReceiveData");
- // setTimeout(() => {
- // this.OpenBlue().then(() => {
- // this.linkAllDevices();
- // });
-
- // }, 10);
this.dic = {
errRemarks: [{
diff --git a/utils/BleReceive.js b/utils/BleReceive.js
index a9175c7..c68768a 100644
--- a/utils/BleReceive.js
+++ b/utils/BleReceive.js
@@ -1,8 +1,20 @@
import Common from '@/utils/Common.js'
-import { parseBleData } from '@/api/100J/HBY100-J.js'
+import {
+ parseBleData
+} from '@/api/100J/HBY100-J.js'
+import {
+ MsgSuccess,
+ MsgError,
+ MsgClose,
+ MsgWarning,
+ showPop,
+ MsgClear,
+ MsgInfo
+} from '@/utils/MsgPops.js';
class BleReceive {
- constructor() {
+ constructor(_ref) {
+ this.ref = _ref;
this.StorageKey = "linkedDevices";
this.HandlerMap = {
'/pages/6155/deviceDetail': this.Receive_6155.bind(this),
@@ -13,10 +25,11 @@ class BleReceive {
'/pages/4877/BJQ4877': this.Receive_4877.bind(this),
'/pages/100/HBY100': this.Receive_100.bind(this),
'/pages/102/HBY102': this.Receive_102.bind(this),
- '/pages/6170/deviceControl/index':this.Receive_6170.bind(this),
+ '/pages/6170/deviceControl/index': this.Receive_6170.bind(this),
'/pages/100J/HBY100-J': this.Receive_100J.bind(this),
- '/pages/6075J/BJQ6075J':this.Receive_6075.bind(this)
+ '/pages/6075J/BJQ6075J': this.Receive_6075.bind(this)
};
+
}
@@ -63,23 +76,23 @@ class BleReceive {
return receive;
}
- if (f && f.macAddress && f.device && f.device.id) {
+ if (fReady) {
let handler = null;
let keys = Object.keys(this.HandlerMap);
let devKey = f.device.detailPageUrl ? f.device.detailPageUrl.replace(/\//g, '').toLowerCase() : '';
-
+
for (let index = 0; index < keys.length; index++) {
let devKey = f.device.detailPageUrl ? f.device.detailPageUrl.replace(/\//g, "").toLowerCase() : '';
let key = keys[index].replace(/\//g, '').toLowerCase();
if (key == devKey) {
handler = this.HandlerMap[keys[index]];
-
+
break;
}
}
if (handler) {
- let data = handler(receive, f, path, recArr);
+ let data = handler(receive, f, path, recArr);
this.setBleFormData(data, f);
return data;
} else {
@@ -89,7 +102,7 @@ class BleReceive {
} else {
// 100J AE30 二进制帧在 f 不完整时已在上方 parseBleData,此处不再误报「无法处理」
if (!is100JAe30) {
- console.log("已收到该消息,但无法处理", receive, "f:", f);
+ console.error("已收到该消息,但无法处理", receive, "f:", f);
}
}
@@ -180,40 +193,33 @@ class BleReceive {
formData.modeCurr = modeCurr;
formData.warnLevel = warn;
formData.iswarn = iswarn;
-
+
let recCnt = recArr.find(v => {
return v.key.replace(/\//g, "").toLowerCase() == f.device.detailPageUrl
.replace(/\//g, "").toLowerCase();
});
if (!recCnt) {
+ let msg = [];
+ if (f) {
+ if (formData.battary <= 20) {
+ msg.push("设备'" + f.device.deviceName + "'电量低");
+ }
+ if (iswarn) {
+ msg.push("设备'" + f.device.deviceName + "'环境存在漏电电源");
+ }
- if (iswarn) {
- uni.showModal({
- content: "'" + f.device.deviceName + "'环境存在漏电电源",
- title: "警告",
- success(res) {
- if (res.confirm) {
-
- if (f) {
- uni.navigateTo({
- url: f.detailPageUrl,
- events: {
- ack: function(data) {}
- },
- success: (res) => {
- res.eventChannel.emit('detailData', {
- data: f,
- deviceType: '',
- apiType: 'listA'
- });
- }
- });
- }
- }
+ if (this.ref && msg.length>0) {
+ if (msg.length > 0) {
+ msg = msg.join(',');
+ MsgError("'" + f.device.deviceName + "'环境存在漏电电源", '', this.ref, () => {
+ MsgClear(this.ref);
+ });
}
- })
+ }
}
+
+
}
return formData;
} catch (error) {
@@ -229,7 +235,7 @@ class BleReceive {
if (str.indexOf('mac address:') == 0) {
let formData = {};
formData.macAddress = str.split(':')[1];
-
+
return formData;
} else {
let receiveData = {
@@ -348,7 +354,7 @@ class BleReceive {
receiveData.fourGStrenth = fourGStrenth;
receiveData.SOS = sosTxt;
receiveData.qzwarn = sosTxt === 'sg';
-
+
console.log("recArr=", recArr);
let recCnt = recArr.find(v => {
return v.key.replace(/\//g, "").toLowerCase() == f.device.detailPageUrl
@@ -362,13 +368,22 @@ class BleReceive {
if (staticWarn) { //有静止报警
msgs.push("静止报警中");
}
+ if (receiveData.battary <= 20) {
+ msg.push("设备'" + f.device.deviceName + "'电量低");
+ }
if (msgs.length > 0) {
- msgs = "设备'" + f.device.deviceName + msgs.join(";");
- uni.showModal({
- title: "警告",
- content: msgs,
- showCancel: false
- });
+ msgs = msgs.join(";");
+ if (this.ref) {
+ MsgError(msgs, '', this.ref, () => {
+ MsgClear(this.ref);
+ });
+ }
+
+ // uni.showModal({
+ // title: "警告",
+ // content: msgs,
+ // showCancel: false
+ // });
}
}
@@ -436,7 +451,7 @@ class BleReceive {
console.log('将数据转文本失败', ex);
}
}
-
+
return receiveData;
}
@@ -514,12 +529,13 @@ class BleReceive {
});
if (!recCnt) {
- if (batteryLevel <= 20) {
- // 会弹出两个框,暂且注释掉这段代码
- uni.showModal({
- content: "设备'" + f.device.deviceName + "'电量低",
- title: "提示"
- });
+ if (batteryLevel <= 20 && warn == 0x00) {
+
+ if (this.ref) {
+ MsgError("设备'" + f.device.deviceName + "'电量低", '', this.ref, () => {
+ MsgClear(this.ref);
+ });
+ }
}
}
@@ -613,13 +629,17 @@ class BleReceive {
});
+ console.log("formData=",formData)
if (!recCnt) {
- if (batteryLevel <= 20) {
- // 会弹出两个框,暂且注释掉这段代码
- uni.showModal({
- content: "设备'" + f.device.deviceName + "'电量低",
- title: "提示"
- });
+ console.log("11111");
+ if (formData.battary <= 20 && bytes[5] == 0x00) {
+ console.log("2222")
+ if (this.ref) {
+ console.log("3333333");
+ MsgError("设备'" + f.device.deviceName + "'电量低", '', this.ref, () => {
+ MsgClear(this.ref);
+ });
+ }
}
}
@@ -646,11 +666,13 @@ class BleReceive {
});
if (!recCnt) {
if (receiveData.sta_PowerPercent <= 20) {
- uni.showModal({
- title: "提示",
- content: "设备'" + f.device.deviceName + "'电量低",
- showCancel: false
- });
+
+ if (this.ref) {
+ MsgError("设备'" + f.device.deviceName + "'电量低", '', this.ref, () => {
+ MsgClear(this.ref);
+ });
+ }
+
}
}
} catch (error) {
@@ -674,12 +696,16 @@ class BleReceive {
.replace(/\//g, "").toLowerCase();
});
if (!recCnt) {
- if (receiveData.sta_battery <= 20) {
- uni.showModal({
- title: "提示",
- content: "设备'" + f.device.deviceName + "'电量低",
- showCancel: false
- });
+ if (receiveData.sta_battery <= 20 && (receiveData.sta_system != '1' || receiveData.sta_system !=
+ '3')) {
+
+ if (this.ref) {
+ MsgError("设备'" + f.device.deviceName + "'电量低", '', this.ref, () => {
+ MsgClear(this.ref);
+ });
+ }
+
+
}
}
} catch (error) {
@@ -695,19 +721,22 @@ class BleReceive {
try {
if (!receive.bytes || receive.bytes.length < 3) return receiveData;
// 与 HBY100-J 页 bleValueNotify 共用 notify,避免 parseBleData 执行两次:重复日志、FB05 双次 resolve、onNotify 双次
- const parsed = parseBleData(receive.bytes, { skipSideEffects: true });
+ const parsed = parseBleData(receive.bytes, {
+ skipSideEffects: true
+ });
if (!parsed) return receiveData;
if (parsed.longitude !== undefined) receiveData.longitude = parsed.longitude;
if (parsed.latitude !== undefined) receiveData.latitude = parsed.latitude;
if (parsed.batteryPercentage !== undefined) receiveData.batteryPercentage = parsed.batteryPercentage;
- if (parsed.batteryRemainingTime !== undefined) receiveData.batteryRemainingTime = parsed.batteryRemainingTime;
+ if (parsed.batteryRemainingTime !== undefined) receiveData.batteryRemainingTime = parsed
+ .batteryRemainingTime;
} catch (e) {
console.log('[100J] BleReceive 解析失败', e);
}
return receiveData;
}
-Receive_6170(receive, f, path, recArr) {
+ Receive_6170(receive, f, path, recArr) {
let receiveData = {};
try {
@@ -721,21 +750,20 @@ Receive_6170(receive, f, path, recArr) {
.replace(/\//g, "").toLowerCase();
});
if (!recCnt) {
- if (receiveData.sta_PowerPercent <= 20) {
- uni.showModal({
- title: "提示",
- content: "设备'" + f.device.deviceName + "'电量低",
- showCancel: false
- });
+ let deviceState = receiveData.state;
+ if (deviceState && deviceState instanceof Array) {
+ if (deviceState[0] == 12 && deviceState[3] <= 20 && deviceState[4] == 0) {
+ if (this.ref) {
+ MsgError("设备'" + f.device.deviceName + "'电量低", '', this.ref, () => {
+ MsgClear(this.ref);
+ });
+ }
+ }
}
-
+
+
}
-
-
-
-
-
} catch (error) {
receiveData = {};
console.error("文本解析失败", error)
@@ -758,18 +786,21 @@ Receive_6170(receive, f, path, recArr) {
.replace(/\//g, "").toLowerCase();
});
if (!recCnt) {
- if (receiveData.sta_PowerPercent <= 20) {
- uni.showModal({
- title: "提示",
- content: "设备'" + f.device.deviceName + "'电量低",
- showCancel: false
- });
+
+ let msgs = [];
+
+ if (receiveData.sta_PowerPercent <= 20 && receiveData.sta_charge == 0) {
+ msgs.push("设备'" + f.device.deviceName + "'电量低");
}
if (receiveData.sta_Intrusion === 1) {
- uni.showModal({
- title: "提示",
- content: "闯入报警中",
- showCancel: false
+ msgs.push("设备'" + f.device.deviceName + "'闯入报警中");
+ }
+
+
+ if (this.ref && msg.length>0) {
+ msgs = msgs.join(",");
+ MsgError(msgs, '', this.ref, () => {
+ MsgClear(this.ref);
});
}
@@ -787,7 +818,7 @@ Receive_6170(receive, f, path, recArr) {
if (receiveData.sta_tomac.indexOf(':') == -1) {
receiveData.sta_tomac = receiveData.sta_tomac.replace(/(.{2})/g, '$1:').slice(0, -
- 1); //mac地址自动补:
+ 1); //mac地址自动补:
}
uni.getStorageInfo({
success: function(res) {
@@ -814,9 +845,9 @@ Receive_6170(receive, f, path, recArr) {
let dev = arr.find(v => {
if (v.linkId == f.linkId) {
let vl = v.linkEqs.find(cvl => {
- if(cvl.linkMac === receiveData.sta_tomac){
- v.read=false;
- cvl.linkTime=time;
+ if (cvl.linkMac === receiveData.sta_tomac) {
+ v.read = false;
+ cvl.linkTime = time;
return true;
}
return false;
@@ -853,7 +884,7 @@ Receive_6170(receive, f, path, recArr) {
console.error("某个设备闯入报警");
if (receiveData.sta_sosadd.indexOf(':') == -1) {
receiveData.sta_sosadd = receiveData.sta_sosadd.replace(/(.{2})/g, '$1:').slice(0, -
- 1); //mac地址自动补:
+ 1); //mac地址自动补:
}
warnArrs.push({
linkId: f.linkId,
@@ -911,35 +942,33 @@ Receive_6170(receive, f, path, recArr) {
}
- Receive_6075(receive,f,path,recArr){
+ Receive_6075(receive, f, path, recArr) {
let receiveData = {};
-
+
try {
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: "设备'" + f.device.deviceName + "'电量低",
- // showCancel: false
- // });
- // }
-
-
+ if (!recCnt && this.ref) {
+ if (receiveData.sta_PowerPercent <= 20 && (receiveData.sta_system != 3 || receiveData.sta_system !=1)) {
+
+ MsgError("设备'" + f.device.deviceName + "'电量低", '', this.ref, () => {
+ MsgClear(this.ref);
+ });
+
+ }
}
-
+
} catch (error) {
receiveData = {};
console.log("文本解析失败", error)
}
return receiveData;
-
+
}
}
@@ -947,10 +976,12 @@ Receive_6170(receive, f, path, recArr) {
let receiveInstance = null;
export default {
- getBleReceive: function(found, receive) {
+ getBleReceive: function(_ref) {
+ console.log("_ref=",_ref);
if (!receiveInstance) {
- receiveInstance = new BleReceive();
-
+ receiveInstance = new BleReceive(_ref);
+ }else{
+ console.log("使用现有实例receiveInstance")
}
return receiveInstance;
}