浇花器

This commit is contained in:
吴鹏 2025-06-06 11:33:09 +08:00
parent 87aa307761
commit 3a672a3795
5 changed files with 601 additions and 557 deletions

View File

@ -118,7 +118,7 @@ function string2buffer(str) {
}
af += s;
var n1 = parseInt('110' + af.substring(0, 5), 2);
var n2 = parseInt('110' + af.slice(-12), 2);
var n2 = parseInt('110' + af.substring(5), 2);
if (n1 > 127) n1 -= 256;
if (n2 > 127) n2 -= 256;
bytes.push(n1);
@ -417,36 +417,44 @@ function send_ota_data(deviceId, serviceId, characteristicId, data) {
});
});
}
let send_num =0
function send_ota_data_num(deviceId, serviceId, characteristicId, data, num) {
return new Promise(function (resolve, reject) {
uni.writeBLECharacteristicValue({
deviceId: deviceId,
serviceId: serviceId,
characteristicId: characteristicId,
value: data,
// writeType:'writeNoResponse',
// value: buffer,
success: function (res) {
// console.log("送数据成功")
// let obj = {
// 'type': mDeviceEvent
// .XBLUFI_TYPE
// .TYPE_RECIEVE_MY_DATA,
// 'result': true,
// 'data': num
// };
// mDeviceEvent
// .notifyDeviceMsgEvent(
// obj
// );
resolve(res)
},
fail: function (res) {
console.log("送数据失败")
reject(res)
}
});
// console.log("送数12据")
if(send_num++%5==0)
{
uni.writeBLECharacteristicValue({
deviceId: deviceId,
serviceId: serviceId,
characteristicId: characteristicId,
value: data,
writeType:'write',
success: function (res) {
resolve(res)
},
fail: function (res) {
console.log("送数据失败")
reject(FALSE)
}
});
}
else
{
uni.writeBLECharacteristicValue({
deviceId: deviceId,
serviceId: serviceId,
characteristicId: characteristicId,
value: data,
writeType:'writeNoResponse',
success: function (res) {
resolve(res)
},
fail: function (res) {
console.log("送数据失败")
reject(FALSE)
}
});
}
});
}
@ -649,6 +657,94 @@ function write_cmd_program(deviceId, serviceId, characteristicId, data) {
// var requestTask =
}
function write_cmd_program_dd(deviceId, serviceId, characteristicId, data) {
var address = 0;
var len = 0;
var buf = 0;
var dv = 0;
let result;
console.log("更新122")
const mtu = 212;
uni.setBLEMTU({
deviceId: self
.data
.deviceId,
mtu,
success: (
res
) => {
console
.log(
"setBLEMTU success>>",
res
)
},
fail: (
res
) => {
console
.log(
"setBLEMTU fail>>",
res
)
},
});
var value1 = util.write_ota_erase(CMD_IAP_ERASE, 4, 0, 0);
var typedArray1 = new Uint8Array(value1);
console.log("送擦除数据", result)
send_ota_data(deviceId, serviceId, characteristicId, typedArray1.buffer);
setTimeout(function () {
uni.request({
url: 'https://www.zenghi.com/gj/三代钉钉.bin', //仅为示例,并非真实接口地址。
//url: 'https://www.zenghi.com/gj/BLE钉钉.bin', //仅为示例,并非真实接口地址。
// url: 'https://www.zenghi.com/gj/电子秤.bin', //仅为示例,并非真实接口地址。
responseType: 'arraybuffer',
success: (res) => {
dv = new DataView(res.data);
var bufferLength = dv.byteLength;
var sum = 0;
for (var i = 0; i < bufferLength; i++) {
sum += dv.getUint8(i)
}
result = dv
console.log(result);
console.log("content-length", bufferLength);
console.log("sum", sum);
len = bufferLength
var p_data = 0;
var p_ii = 0;
while (address <= len) {
var offst = 176;
if (address + 176 > len) {
offst = len - address;
}
var value = util.write_ota_program(CMD_IAP_PROM, offst, address, result);
var typedArray = new Uint8Array(value);
send_ota_data_num(deviceId, serviceId, characteristicId, typedArray.buffer, (address /
len));
address = address + 176;
}
// return new Promise
var value2 = util.write_ota_sum(CMD_IAP_SUM, bufferLength, sum);
var typedArray2 = new Uint8Array(value2);
console.log("送结束数据", value2)
send_ota_data_num(deviceId, serviceId, characteristicId, typedArray2.buffer, 100);
},
fail: function (res) {
console.log("获取失败");
}
})
}
, "1000");
// var requestTask =
}
function write_cmd_program_zy(deviceId, serviceId, characteristicId, data) {
var address = 0;
var len = 0;
@ -824,7 +920,6 @@ function write_cmd_program_yk(deviceId, serviceId, characteristicId, data) {
}
function write_cmd_program_fg(web, deviceId, serviceId, characteristicId, data) {
var address = 0;
var len = 0;
@ -893,7 +988,7 @@ function write_cmd_program_fg(web, deviceId, serviceId, characteristicId, data)
len))
address = address + 176;
console.log("送数据", qq)
// console.log("送数据", qq)
}
// return new Promise
@ -912,104 +1007,8 @@ function write_cmd_program_fg(web, deviceId, serviceId, characteristicId, data)
// var requestTask =
}
// 模拟一个异步操作,比如网络请求
function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Data fetched!');
}, 20); // 模拟网络延迟 2 秒
});
}
// 模拟一个异步操作,比如网络请求
function fetchData2() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Data fetched!');
}, 2000); // 模拟网络延迟 2 秒
});
}
async function main(res, my_sum, deviceId, serviceId, characteristicId) {
var address = 0;
var len = 0;
var buf = 0;
var dv = 0;
let result;
dv = new DataView(res.data);
var bufferLength = dv.byteLength;
var sum = 0;
for (var i = 0; i < bufferLength; i++) {
sum += dv.getUint8(i)
}
const data1 = await fetchData2();
result = dv
console.log(result);
console.log("content-length", bufferLength);
console.log("sum", sum);
len = bufferLength
if (sum != my_sum && my_sum != 100) {
console.log("不相等my_sum", my_sum);
return;
}
var p_data = 0;
var p_ii = 0;
while (address <= len) {
var offst = 176;
if (address + 176 > len) {
offst = len - address;
}
var value = util.write_ota_program(CMD_IAP_PROM, offst, address, result);
var typedArray = new Uint8Array(value);
// console.log("12121")
const data = await fetchData();
var qq = await send_ota_data_num(deviceId, serviceId, characteristicId, typedArray.buffer, (address /
len))
if (qq == false) {
console.log("返回", sum);
return
}
address = address + 176;
// //console.log("送数据", qq)
}
const data = await fetchData();
// return new Promise
var value2 = util.write_ota_sum(CMD_IAP_SUM, bufferLength, sum);
var typedArray2 = new Uint8Array(value2);
// console.log("送结束数据", value2)
send_ota_data_num(deviceId, serviceId, characteristicId, typedArray2.buffer, 100);
}
function write_cmd_program_sum(web, sum, deviceId, serviceId, characteristicId, data) {
var address = 0;
var len = 0;
var buf = 0;
var dv = 0;
let result;
console.log("更新122")
const mtu = 230;
var value1 = util.write_ota_erase(CMD_IAP_ERASE, 4, 0, 0);
var typedArray1 = new Uint8Array(value1);
console.log("翻盖柜", typedArray1)
console.log("翻盖柜", deviceId)
console.log("翻盖柜", serviceId)
console.log("翻盖柜", characteristicId)
send_ota_data(deviceId, serviceId, characteristicId, typedArray1.buffer);
// return;
setTimeout(function () {
uni.request({
url: web, //仅为示例,并非真实接口地址。
//url: 'https://www.zenghi.com/gj/BLE钉钉.bin', //仅为示例,并非真实接口地址。
// url: 'https://www.zenghi.com/gj/电子秤.bin', //仅为示例,并非真实接口地址。
responseType: 'arraybuffer',
success: (res) => {
main(res, sum, deviceId, serviceId, characteristicId)
},
fail: function (res) {
console.log("获取失败");
}
})
}
, 3000);
}
function writeCutomsData(deviceId, serviceId, characteristicId, data) {
// var obj = {},
@ -1037,7 +1036,11 @@ function writeCutomsData(deviceId, serviceId, characteristicId, data) {
console.log("data", data)
// if (data.indexOf("update") != -1 && data.indexOf("all_update") == -1) {
// console.log("送数update据成功")
// write_cmd_program(deviceId, serviceId, characteristicId, data)
// // write_cmd_program(deviceId, serviceId, characteristicId, data)
// }
// else if (data.indexOf("updddate") != -1 && data.indexOf("all_update") == -1) {
// console.log("送数update据成功")
// write_cmd_program_dd(deviceId, serviceId, characteristicId, data)
// }
// else if (data.indexOf("upzydsm") != -1 ) {
// console.log("送数upzydsm据成功")
@ -1047,20 +1050,15 @@ function writeCutomsData(deviceId, serviceId, characteristicId, data) {
// console.log("送数upykdate据成功")
// write_cmd_program_yk(deviceId, serviceId, characteristicId, data)
// }
// else if (data.indexOf("fgdate") != -1 ) {
// write_cmd_program_fg('https://fg.zenghi.com/gj/翻盖柜.bin',deviceId, serviceId, characteristicId, data)
// }
// else
if (data.sum == 100) {
write_cmd_program_fg(data.http,deviceId, serviceId, characteristicId, data)
}
// else if (data.indexOf("ble_go7p") != -1 ) {
// console.log("送数update据成功")
// write_cmd_program7p(deviceId, serviceId, characteristicId, data)
// }
if(data.sum != undefined){
if(data.http != undefined){
console.log('升级');
write_cmd_program_sum(data.http, data.sum, deviceId, serviceId, characteristicId, data)
}
}
else {
var buffer = string2buffer(data)
uni.writeBLECharacteristicValue({
@ -1073,7 +1071,6 @@ function writeCutomsData(deviceId, serviceId, characteristicId, data) {
console.log("送数据成功")
},
fail: function (res) { //console.log(257);
console.log("送数据成功",res)
}
});
}
@ -1201,7 +1198,6 @@ function init() {
};
mDeviceEvent.notifyDeviceMsgEvent(obj);
});
console.log("初始化!!!!!!!!!!!!")
mDeviceEvent.listenStartDiscoverBle(true, function (options) {
if (options.isStart) {
//第一步检查蓝牙适配器是否可用
@ -1210,147 +1206,123 @@ function init() {
}); //第二步关闭适配器,重新来搜索
uni.closeBluetoothAdapter({
complete: function (res)
{
console.log("这里蓝牙数据")
wx.openBluetoothAdapter({
complete: function (res) {
uni.openBluetoothAdapter({
success: function (res) {
uni.getBluetoothAdapterState({
success: function (res) {
console.log("这里蓝牙数据222")
{
let devicesList = [];
let countsTimes = 0;
uni.onBluetoothDeviceFound(function (devices) {
//剔除重复设备兼容不同设备API的不同返回值
var isnotexist = true;
// console.log('devices',devices);
if (devices.deviceId) {
if (devices.advertisData) {
devices.advertisData = buf2hex(devices.advertisData);
} else {
devices.advertisData = '';
}
for (var i = 0; i < devicesList.length; i++) {
if (devices.deviceId === devicesList[i].deviceId) {
uni.stopBluetoothDevicesDiscovery({
success: function (res) {
let devicesList = [];
let countsTimes = 0;
uni.onBluetoothDeviceFound(function (devices) {
//剔除重复设备兼容不同设备API的不同返回值
var isnotexist = true;
// console.log('devices',devices);
if (devices.deviceId) {
if (devices.advertisData) {
devices.advertisData = buf2hex(devices.advertisData);
} else {
devices.advertisData = '';
}
for (var i = 0; i < devicesList.length; i++) {
if (devices.deviceId === devicesList[i].deviceId) {
isnotexist = false;
}
}
if (isnotexist) {
devicesList.push(devices);
}
} else if (devices.devices) {
// console.log(devices.devices[0])
if (devices.devices[0].name != '开发板'
&& devices.devices[0].name != '无线钉钉'
&& devices.devices[0].name != '无线工具'
// && devices.devices[0].indexOf('TOOL') == -1
&& devices.devices[0].name.indexOf('WATE') == -1
&& devices.devices[0].name.indexOf('SMSJ') == -1
// && devices.devices[0].name.indexOf('BBLE') == -1
// && devices.devices[0].name.indexOf('FXLE') == -1
// && devices.devices[0].name.indexOf('CCYK') == -1
) {
// console.log("跳过")
isnotexist = false;
}
}
if (isnotexist) {
devicesList.push(devices);
}
} else if (devices.devices) {
// console.log(devices.devices[0],'4512544')
// if (devices.devices[0].name != '开发板'
// && devices.devices[0].name != 'SMART_R2XS'
// && devices.devices[0].name != 'SMART_R2XS'
// )
if (devices.devices[0].name.indexOf("WATER") != -1 || devices.devices[0].name.indexOf("SMSJ:") != -1){
// if ( devices.devices[0].name.indexOf("gjkg") != -1 ){
// console.log("跳过",devices.devices[0].name)
// isnotexist = false;
isnotexist = true;
}
else
{
isnotexist = false;
}
// isnotexist = true;
if (devices.devices[0].advertisData) {
devices.devices[0].advertisData = buf2hex(devices.devices[0].advertisData);
} else {
devices.devices[0].advertisData = '';
}
for (var i = 0; i < devicesList.length; i++) {
if (devices.devices[0].deviceId == devicesList[i].deviceId) {
isnotexist = false;
if (devices.devices[0].advertisData) {
devices.devices[0].advertisData = buf2hex(devices.devices[0].advertisData);
} else {
devices.devices[0].advertisData = '';
}
for (var i = 0; i < devicesList.length; i++) {
if (devices.devices[0].deviceId == devicesList[i].deviceId) {
isnotexist = false;
}
}
if (isnotexist) {
devicesList.push(devices.devices[0]);
}
} else if (devices[0]) {
if (devices[0].advertisData) {
devices[0].advertisData = buf2hex(devices[0].advertisData);
} else {
devices[0].advertisData = '';
}
for (var i = 0; i < devices_list.length; i++) {
if (devices[0].deviceId == devicesList[i].deviceId) {
isnotexist = false;
}
}
if (isnotexist) {
devicesList.push(devices[0]);
}
}
if (isnotexist) {
devicesList.push(devices.devices[0]);
console.log("devicesList",devicesList);
// let obj = {
// 'type': mDeviceEvent.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS,
// 'result': true,
// 'data': devicesList
// };
// mDeviceEvent.notifyDeviceMsgEvent(obj);
}
} else if (devices[0]) {
if (devices[0].advertisData) {
devices[0].advertisData = buf2hex(devices[0].advertisData);
} else {
devices[0].advertisData = '';
}
for (var i = 0; i < devices_list.length; i++) {
if (devices[0].deviceId == devicesList[i].deviceId) {
isnotexist = false;
}
}
if (isnotexist) {
devicesList.push(devices[0]);
console.log("devicesList",devicesList);
// let obj = {
// 'type': mDeviceEvent.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS,
// 'result': true,
// 'data': devicesList
// };
// mDeviceEvent.notifyDeviceMsgEvent(obj);
}
}
let obj = {
'type': mDeviceEvent.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS,
'result': true,
'data': devicesList
};
mDeviceEvent.notifyDeviceMsgEvent(obj);
});
uni.startBluetoothDevicesDiscovery({
allowDuplicatesKey: true,
success: function (res) {
console.log(res,'true');
let obj = {
'type': mDeviceEvent.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START,
'type': mDeviceEvent.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS,
'result': true,
'data': res
};
mDeviceEvent.notifyDeviceMsgEvent(obj); //开始扫码,清空列表
devicesList.length = 0;
},
fail: function (res) {
console.log(res,'false');
let obj = {
'type': mDeviceEvent.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START,
'result': false,
'data': res
'data': devicesList
};
mDeviceEvent.notifyDeviceMsgEvent(obj);
}
});
}
// uni.stopBluetoothDevicesDiscovery({
// success: function (res)
// fail: function (res) {
// let obj = {
// 'type': mDeviceEvent.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START,
// 'result': false,
// 'data': res
// };
// mDeviceEvent.notifyDeviceMsgEvent(obj);
// }
// });
});
uni.startBluetoothDevicesDiscovery({
allowDuplicatesKey: true,
success: function (res) {
let obj = {
'type': mDeviceEvent.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START,
'result': true,
'data': res
};
mDeviceEvent.notifyDeviceMsgEvent(obj); //开始扫码,清空列表
devicesList.length = 0;
},
fail: function (res) {
let obj = {
'type': mDeviceEvent.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START,
'result': false,
'data': res
};
mDeviceEvent.notifyDeviceMsgEvent(obj);
}
});
},
fail: function (res) {
let obj = {
'type': mDeviceEvent.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START,
'result': false,
'data': res
};
mDeviceEvent.notifyDeviceMsgEvent(obj);
}
});
},
fail: function (res) {
let obj = {
@ -1396,12 +1368,10 @@ function init() {
}
});
mDeviceEvent.listenConnectBle(true, function (options) {
console.log("我要连接?", options.isStart,options);
if (options.isStart){
uni.createBLEConnection({
deviceId: options.deviceId,
success: (res) =>{
// console.log(res,'100');
console.log("我要连接?", options.isStart);
if (options.isStart) uni.createBLEConnection({
deviceId: options.deviceId,
success: function (res) {
self.data.deviceId = options.deviceId;
mDeviceEvent.notifyDeviceMsgEvent({
'type': mDeviceEvent.XBLUFI_TYPE.TYPE_CONNECTED,
@ -1409,11 +1379,10 @@ function init() {
'data': {
deviceId: options.deviceId,
name: options.name
},
}
});
},
fail: (res) =>{
// console.log(res,'1112');
fail: function (res) {
self.data.deviceId = null;
mDeviceEvent.notifyDeviceMsgEvent({
'type': mDeviceEvent.XBLUFI_TYPE.TYPE_CONNECTED,
@ -1422,7 +1391,6 @@ function init() {
});
}
});
}
else uni.closeBLEConnection({
deviceId: options.deviceId,
success: function (res) {
@ -1483,20 +1451,46 @@ function init() {
let deviceId = options.deviceId;
self.data.deviceId = options.deviceId;
mac_id = options.deviceId;
setTimeout(() => {
console.log(deviceId,'deviceIddeviceId');
var mtu = 212
uni.setBLEMTU({
deviceId: self
.data
.deviceId,
mtu,
success: (
res
) => {
console
.log(
"setBLEMTU success>>",
res
)
},
fail: (
res
) => {
console
.log(
"setBLEMTU fail>>",
res
)
},
});
uni.getBLEDeviceServices({
// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
deviceId: deviceId,
success: function(res) {
console.log("服务发现456", res)
var services = res.services;
if (services.length > 0) {
for (var i = 0; i < services.length; i++) {
if (services[i].uuid === self.data.service_uuid) {
var serviceId = services[i].uuid;
uni.getBLEDeviceCharacteristics({
// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
deviceId: deviceId,
serviceId: serviceId,
@ -1511,14 +1505,7 @@ setTimeout(() => {
if (uuid == self.data.characteristic_write_uuid) {
self.data.serviceId = serviceId;
self.data.uuid = uuid;
console.log("uuid", uuid)
let obj = {
'type': mDeviceEvent.XBLUFI_TYPE.TYPE_INIT_ESP32_RESULT,
'result': true,
'data': res
};
mDeviceEvent.notifyDeviceMsgEvent(obj);
console.log('服务发现1111111');
console.log("uuid", uuid)
uni.notifyBLECharacteristicValueChange({
state: true,
// 启用 notify 功能
@ -1528,29 +1515,7 @@ setTimeout(() => {
success: function(res) {
console.log("成功", res)
writeCutomsData(self.data.deviceId, self.data.service_uuid, self.data.characteristic_write_uuid, "get_fw");
setTimeout(() => {
const mtu = 212;
uni.setBLEMTU({
deviceId: self.data.deviceId,
mtu,
success: (
res
) => {
console
.log(
"set1212BLEMTU success>>",
res
)
},
fail: (
res
) => {
},
});
}, 1000);
console.log("fail getBLEDeviceServices:" + JSON.stringify(res));
uni.onBLECharacteristicValueChange(function(res) {
var my_str = Utf8ArrayToStr(res.value)
if(my_str.indexOf("wifi_ok") != -1)
@ -1645,7 +1610,7 @@ setTimeout(() => {
}
});
},700);
}, 2000);
});
mDeviceEvent.listenSendRouterSsidAndPassword(true, function(options) {
self.data.password = options.password;

View File

@ -78,14 +78,14 @@
<view class="name">
<text>工作时长</text>
<view class="">
<input type="text" v-model="miao"/>
<input type="number" v-model="miao"/>
</view>
</view>
<view class="name" style="border: 0;">
<text>间隔时间</text>
<view class="">
<input type="text" v-model="tian"/>
<input type="number" v-model="tian"/>
</view>
</view>
@ -514,6 +514,7 @@
//
const timeParts = parts[1].split(",")
//
console.log(timeParts,'timePartstimePartstimeParts');
this.csbobj = {
hour: parseInt(timeParts[0]), //
minute: parseInt(timeParts[1]), //
@ -521,8 +522,8 @@
day: parseInt(timeParts[3]) //
}
console.log(this.csbobj);
this.shi = this.csbobj.hour
this.fen = this.csbobj.minute
this.shi = this.csbobj.hour < 10 ? '0' + this.csbobj.hour : this.csbobj.hour
this.fen = this.csbobj.minute < 10 ? '0' + this.csbobj.minute : this.csbobj.minute
this.miao = this.csbobj.second
this.tian = this.csbobj.day
}

View File

@ -51,7 +51,7 @@
</view>
<!-- 点击搜索 -->
<view class="btnss" @click="handleSearch" :class="{ 'searching': !flag }">
<view class="btnss" @click="handleSearch">
重新搜索
</view>
</view>
@ -353,7 +353,7 @@
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
if (!options.result) {
uni.showToast({
title: '蓝牙未开启',
title: '蓝牙初始化失败',
icon: 'none',
duration: 3000
})
@ -373,14 +373,6 @@
},
//
handleSearch() {
if (!this.flag) {
uni.showToast({
title: '请等待蓝牙搜索完成后再操作',
icon: 'none',
duration: 2000
})
return
}
this.btnss()
},
}
@ -448,11 +440,6 @@
transform: translateX(-50%);
bottom: 106rpx;
transition: all 0.3s ease;
&.searching {
background: #E5E5E5;
color: #666666;
}
}
.list {

View File

@ -26,8 +26,8 @@
<view class="wifi" style="margin-top: 24rpx;display: block;" @click="gjconfirm" >
<view class="" style="display: flex;justify-content: space-between;align-items: center;">
<view class="">固件更新</view>
<view class="flex" style="color: red;font-size: 20rpx;" v-if=" ver != null && ver != version">
<text style="display: inline-block;width: 10rpx;height: 10rpx;border-radius: 50%;background-color: red;margin-right: 10rpx;"></text>更新
<view class="flex" style="color: red;font-size: 26rpx;" v-if=" ver != null && ver != version">
<text style="display: inline-block;width: 10rpx;height: 10rpx;border-radius: 50%;background-color: red;margin-right: 10rpx;"></text>点击更新
</view>
</view>
<view class="" style="font-size: 24rpx;display: flex;justify-content: space-between;">
@ -251,21 +251,14 @@
clearInterval(this.intervalId); // 100%
console.log("加载完成");
}
}, 30); // 30
}, 1); // 1
},
//
gjconfirm(e) {
// console.log('',this.file);
// var data = {
// sum: 100,
// http: this.file
// }
// xBlufi.notifySendCustomData({
// customData: data
// })
// this.shengjiflag = true
// this.startProgress()
if(this.ver != null && this.ver != this.version){
xBlufi.notifySendCustomData({
customData: '11sleep' + this.xinpin
})
if(this.file == '' || this.file == null){
uni.showToast({
title: '暂无新版本',
@ -276,10 +269,12 @@
console.log('更新');
var data = {
sum: 100,
http: this.file
}
http:this.file
}
// https://www.zenghi.com/gj/water_flower.bin
console.log(data,'5555555555555555555555555');
xBlufi.notifySendCustomData({
customData: data
customData:data
})
this.shengjiflag = true
this.startProgress()
@ -323,6 +318,14 @@
case xBlufi.XBLUFI_TYPE.TYPE_STATUS_CONNECTED:
if (!options.result) {
console.log('duankai');
uni.showToast({
title: '蓝牙已断开',
icon: 'none',
duration: 2000
})
uni.reLaunch({
url:'/pages/index/index'
})
}
break;
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
@ -339,7 +342,7 @@
}
break
case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
console.log("选择固件升级收信息:", options.data, options.data.length);
// console.log("", options.data, options.data.length);
if (typeof options.data === 'string') {
if (options.data.indexOf("prom:") !== -1) {
console.log('固件升级中')
@ -349,10 +352,10 @@
indexOld.indexOf("prom:") + 5,
indexOld.indexOf("@")
)
this.progress = Number(load_num);
this.progress = Number(load_num);
console.log("load_num", load_num);
console.log("升级进度:", this.progress)
if (this.progress === 6000) {
if (this.progress == 6000) {
console.log('固件成功')
this.progress = 100
uni.showToast({
@ -366,9 +369,9 @@
uni.reLaunch({
url:'/pages/index/index'
})
},2000)
},1000)
}
if (this.progress === 9000) {
if (this.progress == 9000) {
console.log('固件升级失败')
this.progress = 99
uni.showToast({

View File

@ -19,17 +19,6 @@
</view>
</view>
<view class="" v-else>
<!-- 选择设备 -->
<!-- <view class="selectbox">
<view class="selectname" @click="btnksxz">
切换设备 <image v-if="!xuanzeflag" src="https://api.ccttiot.com/smartmeter/img/static/uwHOBxvbJjkhx1uDiQHI" mode=""></image>
<image v-else class="rotated-image" src="https://api.ccttiot.com/smartmeter/img/static/uwHOBxvbJjkhx1uDiQHI" mode=""></image>
</view>
<view class="selectshezhi" style="display: flex;">
<image @click="btnsz" src="https://api.ccttiot.com/smartmeter/img/static/uvCJ8ro0MpfGZd53vypJ" mode=""></image>
</view>
</view> -->
<view class="selectbox">
<view class="shebeiname" >
<view class="" @click="btnksxz">
@ -47,9 +36,6 @@
已连接
</view>
</view>
<!-- <view class="shebeiadd" @click="btnaddsb">
<image src="https://api.ccttiot.com/smartmeter/img/static/udlX67UXzuRUZCuEtWDH" mode=""></image>
</view> -->
<view class="selectshezhi" style="display: flex;">
<image @click="btnsz" src="https://api.ccttiot.com/smartmeter/img/static/uvCJ8ro0MpfGZd53vypJ" mode=""></image>
</view>
@ -64,19 +50,9 @@
<view class="">MAC{{user.mac == undefined ? '--' : user.mac}}</view>
</view>
</view>
<!-- <view class="devicert">
<view class="shoudong">
<image @click="btnkq" v-if="kgflag"
src="https://api.ccttiot.com/smartmeter/img/static/uIiHf1LAHhLyVZODV9Pc" mode="">
</image>
<image @click="btngb" v-else
src="https://api.ccttiot.com/smartmeter/img/static/upKZD5SgfKHZDCxcPSCl" mode="">
</image> 手动浇水
</view>
<view class="shengyu">
剩余{{ sdminutes ? sdminutes + ':' : '' }}{{ sdseconds ? sdseconds : '--' }}
</view>
</view> -->
<view style="color: red;font-size: 26rpx;display: flex;align-items: center;" v-if=" ver != '' && ver.slice(3) != version" @click="btnsz">
<text style="display: inline-block;width: 10rpx;height: 10rpx;border-radius: 50%;background-color: red;margin-right: 10rpx;"></text>可更新
</view>
</view>
<view class="deviceweek" v-if="pre == 'WATER'" @click="btntime">
<view class="weeklist">
@ -114,10 +90,8 @@
每天
</view>
</view>
<view class="img">
<image v-if="ver_data.p_set1 && ver_data.p_set1[0] == xctimesj.slice(0,2) && ver_data.p_set1[1] == xctimesj.slice(-2)"
<image v-if="shouldShowIcon(1)"
src="https://api.ccttiot.com/smartmeter/img/static/u9iZpd6bW6bUsUay4uvH" mode="">
</image>
</view>
@ -158,7 +132,7 @@
</view>
</view>
<view class="img">
<image v-if="ver_data.p_set2 && ver_data.p_set2[0] == xctimesj.slice(0,2) && ver_data.p_set2[1] == xctimesj.slice(-2)"
<image v-if="shouldShowIcon(2)"
src="https://api.ccttiot.com/smartmeter/img/static/u9iZpd6bW6bUsUay4uvH" mode="">
</image>
</view>
@ -199,7 +173,7 @@
</view>
</view>
<view class="img">
<image v-if="ver_data.p_set3 && ver_data.p_set3[0] == xctimesj.slice(0,2) && ver_data.p_set3[1] == xctimesj.slice(-2)"
<image v-if="shouldShowIcon(3)"
src="https://api.ccttiot.com/smartmeter/img/static/u9iZpd6bW6bUsUay4uvH" mode="">
</image>
</view>
@ -240,7 +214,7 @@
</view>
</view>
<view class="img">
<image v-if="ver_data.p_set4 && ver_data.p_set4[0] == xctimesj.slice(0,2) && ver_data.p_set4[1] == xctimesj.slice(-2)"
<image v-if="shouldShowIcon(4)"
src="https://api.ccttiot.com/smartmeter/img/static/u9iZpd6bW6bUsUay4uvH" mode="">
</image>
</view>
@ -281,7 +255,7 @@
</view>
</view>
<view class="img">
<image v-if="ver_data.p_set5 && ver_data.p_set5[0] == xctimesj.slice(0,2) && ver_data.p_set5[1] == xctimesj.slice(-2)"
<image v-if="shouldShowIcon(5)"
src="https://api.ccttiot.com/smartmeter/img/static/u9iZpd6bW6bUsUay4uvH" mode="">
</image>
</view>
@ -322,16 +296,40 @@
</view>
</view>
<view class="img">
<image v-if="ver_data.p_set6 && ver_data.p_set6[0] == xctimesj.slice(0,2) && ver_data.p_set6[1] == xctimesj.slice(-2)"
<image v-if="shouldShowIcon(6)"
src="https://api.ccttiot.com/smartmeter/img/static/u9iZpd6bW6bUsUay4uvH" mode="">
</image>
</view>
</view>
</view>
<view class="" style="display: flex;flex-wrap: wrap;justify-content: space-between;margin-top: 18rpx;" v-else>
<view class="" style="display:flex;align-items: center;font-size: 24rpx;color: #50565A;"><image style="width:32rpx;height:32rpx;margin-right: 8rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uhyYG0TLfWi9XUhTQz7D" mode=""></image>抽水泵启动时间{{csbobj.hour == undefined ? '--' : csbobj.hour + '时'}}{{csbobj.minute == undefined ? '' : csbobj.minute + '分'}}</view>
<view class="" style="display:flex;align-items: center;font-size: 24rpx;color: #50565A;"><image style="width:32rpx;height:32rpx;margin-right: 8rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uuQaK98cmdQQnPWus27Z" mode=""></image>抽水泵工作时长/{{csbobj.second == undefined ? '--' : csbobj.second + '秒'}}</view>
<view class="" style="display:flex;align-items: center;font-size: 24rpx;color: #50565A;margin-top: 18rpx;"><image style="width:32rpx;height:32rpx;margin-right: 8rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uM6Yz4xVqFwzW6xlTRph" mode=""></image>抽水泵间隔时间/{{csbobj.day == undefined ? '--' : csbobj.day + '天'}}</view>
<view class="" style="margin-top: 18rpx;display: flex;justify-content: space-between;" v-else>
<view class="" style="font-size: 24rpx;color: #50565A;text-align: center;margin-top: 10rpx;">
<view class="" style="display: flex;align-items: center;">
<image style="width:32rpx;height:32rpx;margin-right: 8rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uhyYG0TLfWi9XUhTQz7D" mode=""></image>
启动时间
</view>
<view class="" style="margin-top:10rpx;font-size: 36rpx;font-weight: 600;">
{{csbobj.hour == undefined ? '--' : csbobj.hour + ':'}}{{csbobj.minute == undefined ? '' : csbobj.minute}}
</view>
</view>
<view class="" style="font-size: 24rpx;color: #50565A;margin-top: 10rpx;text-align: center;">
<view class="" style="display: flex;align-items: center;">
<image style="width:32rpx;height:32rpx;margin-right: 8rpx;font-size: 36rpx;font-weight: 600;" src="https://api.ccttiot.com/smartmeter/img/static/uuQaK98cmdQQnPWus27Z" mode=""></image>
工作时长
</view>
<view class="" style="margin-top:10rpx;font-size: 36rpx;font-weight: 600;">
{{csbobj.second == undefined ? '--' : csbobj.second + '秒'}}
</view>
</view>
<view class="" style="font-size: 24rpx;color: #50565A;margin-top: 10rpx;text-align: center;">
<view class="" style="display: flex;align-items: center;">
<image style="width:32rpx;height:32rpx;margin-right: 8rpx;font-size: 36rpx;font-weight: 600;" src="https://api.ccttiot.com/smartmeter/img/static/uM6Yz4xVqFwzW6xlTRph" mode=""></image>
间隔天数
</view>
<view class="" style="margin-top:10rpx;font-size: 36rpx;font-weight: 600;">
{{csbobj.day == undefined ? '--' : csbobj.day + '天'}}
</view>
</view>
</view>
</view>
<!-- 开关选择 -->
@ -351,7 +349,6 @@
{{devicetime == '' ? '--' : devicetime.slice(0,5)}} <u-icon name="arrow-right" color="#7FAD76" size="32"></u-icon>
</view>
</view>
<view class="switchbox">
<view class="switch_he" v-if="pre == 'WATER'">
<image src="https://api.ccttiot.com/smartmeter/img/static/u7NwkNOoQYYsvHVMkDlu" mode=""></image>
@ -390,10 +387,8 @@
<image style="width: 170rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uVYXvo4F6U6fJ5fP27BT" mode="aspectFill"></image>{{ sdminutes ? sdminutes + ':' : '' }}{{ sdseconds ? sdseconds : '' }}
</view>
<view class="dstime">
手动浇水 <u-switch v-if="kgflag" v-model="jskeds" @change="btngb" inactive-color="#eee"
active-color="#eee" size="40"></u-switch>
<u-switch v-else v-model="jsked" @change="btnkq" active-color="#7FAD76"
inactive-color="#7FAD76" size="40"></u-switch>
手动浇水 <u-switch v-if="kgflag" v-model="jskeds" @change="btngb" inactive-color="#eee" active-color="#eee" size="40"></u-switch>
<u-switch v-else v-model="jsked" @change="btnkq" active-color="#7FAD76" inactive-color="#7FAD76" size="40"></u-switch>
</view>
</view>
</view>
@ -414,8 +409,10 @@
</view>
</view>
</view>
<view class="" @click="btnbc" v-if="pre == 'WATER'" style="width: 100%;height: 80rpx;background-color: #7FAD76;color: #fff;text-align: center;font-size: 32rpx;line-height: 80rpx;margin-top: 30rpx;border-radius: 20rpx;">
保存定时设置
</view>
</view>
<!-- 切换设备 -->
<view class="tabsb" v-if="xuanzeflag">
<view class="selectbox">
@ -541,7 +538,13 @@
disconnectTimer: null,
devicetime:'',
imgpic:'',
xinp:''
xinp:'',
version:'',
searchStartTime: 0, //
searchTimeout: 10000, // 10
searchTimer: null, //
isSearching: false //
}
},
//
@ -581,6 +584,9 @@
xBlufi.notifyStartDiscoverBle({
'isStart': true
})
// setTimeout(()=>{
// that.btnlj()
// },1500)
},
onShow() {
//
@ -602,6 +608,34 @@
this.clearDisconnectTimer()
},
methods: {
//
btnbc(){
this.handleUserAction()
if(this.vardataflag != 3){
uni.showToast({
title: '设备未连接',
icon: 'none',
duration:2000
})
}else{
uni.showToast({
title: '保存成功',
icon: 'success',
duration:2000
})
xBlufi.notifySendCustomData({
customData: '11sleep' + this.xinp
})
}
},
getbanbens(){
this.$u.get(`/app/model/${this.user.modelId}`).then(res => {
if (res.code == 200) {
this.version = res.data.version.slice(1)
console.log(this.version,'this.versionthis.versionthis.version');
}
})
},
//
btnluru(){
this.datalist = ''
@ -670,6 +704,7 @@
this.deviceId = res.data[0].mac.match(/.{2}/g).reverse().join(':')
this.user = res.data[0]
this.shebid = res.data[0].deviceId
this.getbanbens()
let that = this
}else{
this.bjflag = true
@ -702,6 +737,11 @@
that.findDevice()
}
}
setTimeout(()=>{
if(this.vardataflag != 3){
this.vardataflag = 1
}
},15000)
}
},
// ios
@ -746,13 +786,11 @@
uni.showLoading({
title: '开启中...'
})
// setTimeout(() => {
this.yschecked = false
xBlufi.notifySendCustomData({
customData: '11yudi'
})
uni.hideLoading()
// }, 1500)
this.yschecked = false
xBlufi.notifySendCustomData({
customData: '11yudi'
})
uni.hideLoading()
}
},
//
@ -767,7 +805,7 @@
}else{
this.devicetime = this.getCurrentTime();
console.log(this.devicetime);
if(this.pre == 'WATER'){ //
// if(this.pre == 'WATER'){ //
uni.showLoading({
title: '设置中...'
})
@ -775,15 +813,20 @@
customData: '11date' + this.devicetime + ';'
})
uni.hideLoading()
}else{ //
uni.showLoading({
title: '设置中...'
uni.showToast({
title: '同步成功',
icon: 'success',
duration:2000
})
xBlufi.notifySendCustomData({
customData: '11hour' + this.devicetime + '@',
})
uni.hideLoading()
}
// }else{ //
// uni.showLoading({
// title: '...'
// })
// xBlufi.notifySendCustomData({
// customData: '11hour' + this.devicetime + '@',
// })
// uni.hideLoading()
// }
}
},
//
@ -809,30 +852,26 @@
},
//
confirmtime(e){
if(this.pre == 'WATER'){ //
// if(this.pre == 'WATER'){ //
uni.showLoading({
title: '设置中...'
})
console.log(e.hour,e.minute);
// setTimeout(() => {
this.devicetime = e.hour + ':' + e.minute
xBlufi.notifySendCustomData({
customData: '11date' + e.hour + ':' + e.minute + ';'
})
uni.hideLoading()
// }, 1500)
}else{ //
uni.showLoading({
title: '设置中...'
this.devicetime = e.hour + ':' + e.minute
xBlufi.notifySendCustomData({
customData: '11date' + e.hour + ':' + e.minute + ':' + '00' + ';'
})
console.log(e.hour,e.minute);
// setTimeout(() => {
xBlufi.notifySendCustomData({
customData: '11hour' + e.hour + '@' + e.minute + '@',
})
uni.hideLoading()
// }, 1500)
}
uni.hideLoading()
// }else{ //
// uni.showLoading({
// title: '...'
// })
// console.log(e.hour,e.minute);
// xBlufi.notifySendCustomData({
// customData: '11hour' + e.hour + '@' + e.minute + '@',
// })
// uni.hideLoading()
// }
},
//
btnyushuis() {
@ -849,13 +888,11 @@
uni.showLoading({
title: '关闭中...'
})
// setTimeout(() => {
this.yschecked = true
xBlufi.notifySendCustomData({
customData: '11unyudi'
})
uni.hideLoading()
// }, 1500)
this.yschecked = true
xBlufi.notifySendCustomData({
customData: '11unyudi'
})
uni.hideLoading()
}
},
//
@ -873,13 +910,11 @@
uni.showLoading({
title: '开启中...'
})
// setTimeout(() => {
this.etchecked = false
xBlufi.notifySendCustomData({
customData: '11lock'
})
uni.hideLoading()
// }, 1500)
this.etchecked = false
xBlufi.notifySendCustomData({
customData: '11lock'
})
uni.hideLoading()
}
},
//
@ -897,24 +932,27 @@
uni.showLoading({
title: '关闭中...'
})
// setTimeout(() => {
this.etchecked = true
xBlufi.notifySendCustomData({
customData: '11unlock'
})
uni.hideLoading()
// }, 1500)
this.etchecked = true
xBlufi.notifySendCustomData({
customData: '11unlock'
})
uni.hideLoading()
}
},
//
btnaddsb() {
//
this.vardataflag = 1
this.ver_data = {}
this.datalist = ''
uni.navigateTo({
url: '/page_user/lanya'
this.$u.get(`/appVerify/profile`).then((res) => {
if (res.code == 200) {
this.vardataflag = 1
this.ver_data = {}
this.datalist = ''
uni.navigateTo({
url: '/page_user/lanya'
})
}else if(res.code == 401){
this.jmlogin()
}
})
},
@ -942,7 +980,6 @@
}
},
//
btnqx() {
this.handleUserAction()
@ -966,14 +1003,12 @@
uni.showLoading({
title: '开启中...'
})
// setTimeout(() => {
xBlufi.notifySendCustomData({
customData: "11time@" + this.jstime + '@'
})
uni.hideLoading()
this.startTimer(this.jstime)
this.sdjsflag = false
// }, 1500)
xBlufi.notifySendCustomData({
customData: "11time@" + this.jstime + '@'
})
uni.hideLoading()
this.startTimer(this.jstime)
this.sdjsflag = false
}
},
@ -1015,18 +1050,16 @@
uni.showLoading({
title: '关闭中...'
})
// setTimeout(() => {
xBlufi.notifySendCustomData({
customData: "11close"
})
clearInterval(this.timer)
this.sdminutes = ''
this.sdseconds = ''
this.kgflag = true
this.jsked = true
this.jskeds = false
uni.hideLoading()
// }, 1500)
xBlufi.notifySendCustomData({
customData: "11close"
})
clearInterval(this.timer)
this.sdminutes = ''
this.sdseconds = ''
this.kgflag = true
this.jsked = true
this.jskeds = false
uni.hideLoading()
}
},
//
@ -1050,6 +1083,9 @@
//
btnsz() {
xBlufi.listenDeviceMsgEvent(false, this.funListenDeviceMsgEvent)
if(this.csbobj.day){
this.xctime = '111'
}
uni.navigateTo({
url: '/page_user/upload?deviceid=' + this.shebid + '&ver=' + this.ver + '&xctime=' + this.xctime + '&xipin=' + this.xinp + '&img=' + this.imgpic
})
@ -1107,6 +1143,8 @@
this.imgpic = res.data.modelPicture
this.deviceId = res.data.mac.match(/.{2}/g).reverse().join(':')
this.user = res.data
this.getbanbens()
// this.btnlj()
}
})
},
@ -1149,39 +1187,54 @@
xBlufi.notifyInitBleEsp32({
deviceId: this.deviceId
})
break
case xBlufi.XBLUFI_TYPE.TYPE_INIT_ESP32_RESULT:
if (options.result == true){
console.log('服务发现成功:', options);
this.datalist = '1'
this.vardataflag = 3
this.initDisconnectTimer()
//
console.log("连接成功后发送获取数据命令")
xBlufi.notifySendCustomData({
customData: "11get"
})
setTimeout(()=>{
this.vardataflag = 3
this.initDisconnectTimer()
xBlufi.notifySendCustomData({
customData: "11get"
})
},3000)
}else{
console.log('服务发现失败:', options.data);
this.vardataflag = 1
this.clearDisconnectTimer()
this.clearDisconnectTimer()
}
break
case xBlufi.XBLUFI_TYPE.TYPE_INIT_ESP32_RESULT:
// if (options.result == true){
// console.log(':', options);
// this.datalist = '1'
// this.vardataflag = 3
// this.initDisconnectTimer()
// //
// console.log("")
// xBlufi.notifySendCustomData({
// customData: "11get"
// })
// }else{
// console.log(':', options.data);
// this.vardataflag = 1
// this.clearDisconnectTimer()
// }
break
case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
console.log("收到设备数据:", options.data)
if (options.data.indexOf("prom:") !== -1) {
console.log('固件升级中')
// console.log('')
var indexOld = options.data.substring(options.data.indexOf('prom:'))
console.log("indexOld", indexOld);
// console.log("indexOld", indexOld);
var load_num = indexOld.substring(
indexOld.indexOf("prom:") + 5,
indexOld.indexOf("@")
)
this.progress = Number(load_num);
console.log("load_num", load_num);
// console.log("load_num", load_num);
console.log("升级进度:", this.progress)
if (this.progress === 6000) {
console.log('固件成功')
// console.log('')
this.progress = 100
uni.showToast({
title: '固件升级成功',
@ -1196,7 +1249,7 @@
},2000)
}
if (this.progress === 9000) {
console.log('固件升级失败')
// console.log('')
this.progress = 99
uni.showToast({
title: '固件升级失败',
@ -1222,7 +1275,8 @@
break
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
if (!options.result) {
console.log('蓝牙未开启')
this.vardataflag = 1
console.log('蓝牙初始化失败')
return
}
break
@ -1233,7 +1287,7 @@
const that = this
that.intervalId = setInterval(() => {
if (that.vardataflag == 3) {
console.log("发送获取数据命令")
// console.log("")
xBlufi.notifySendCustomData({
customData: "11get"
})
@ -1251,35 +1305,51 @@
//
getcsbshuju(){
const input = this.datalist
//
const inputString = this.datalist;
const hasAtSymbol = inputString.includes('@');
let processedString;
let currentDay = 0;
if (hasAtSymbol) {
const [ver, restOfString] = inputString.split('@');
this.ver = ver || '';
processedString = restOfString || '';
//
const showMatch = processedString.match(/show:([^;]+)/);
if (showMatch) {
const showValues = showMatch[1].split(',');
currentDay = parseInt(showValues[showValues.length - 1]) || 0;
}
} else {
processedString = inputString;
this.ver = '';
}
const version = this.ver;
const parts = input.replace(";", "").split(":")
//
const timeParts = parts[1].split(",")
//
this.csbobj = {
hour: parseInt(timeParts[0]), //
minute: parseInt(timeParts[1]), //
hour: parseInt(timeParts[0]) < 10 ? '0' + parseInt(timeParts[0]) : parseInt(timeParts[0]), //
minute: parseInt(timeParts[1]) < 10 ? '0' + parseInt(timeParts[1]) : parseInt(timeParts[1]), //
second: parseInt(timeParts[2]), //
day: parseInt(timeParts[3]) //
}
this.devicetime = parseInt(timeParts[4]) + ':' + parseInt(timeParts[5])
this.ver_data = this.csbobj
console.log(this.csbobj);
// console.log(this.csbobj);
},
//
getchuli() {
const inputString = this.datalist;
console.log('接收到的数据:', inputString);
// console.log(':', inputString);
// @
const hasAtSymbol = inputString.includes('@');
let processedString;
let currentDay = 0;
if (hasAtSymbol) {
const [ver, restOfString] = inputString.split('@');
this.ver = ver || '';
processedString = restOfString || '';
//
const showMatch = processedString.match(/show:([^;]+)/);
if (showMatch) {
@ -1290,47 +1360,41 @@
processedString = inputString;
this.ver = '';
}
console.log('处理后的字符串:', processedString);
console.log(this.ver,'this.verthis.verthis.verthis.ver')
// console.log(':', processedString);
// console.log(this.ver,'this.verthis.verthis.ver');
const version = this.ver;
// 使
const versionNumber = version.match(/\d+/); //
if (versionNumber) {
const num = parseInt(versionNumber[0], 10); //
if (num < 9 && !this.hasShownVersionAlert) {
this.hasShownVersionAlert = true; //
uni.showModal({
title: "提示",
content: `您当前设备版本过低,可能无法正常使用,请点击右上角设置前去升级`,
showCancel: false, //
confirmText: "确定", //
success: (res) => {
if (res.confirm) {
console.log("用户点击了确定");
this.hasShownVersionAlert = false; //
}
}
})
} else {
console.log(`版本号 ${num} 不小于 9`);
}
} else {
console.log("没有找到版本号数字");
}
// if (versionNumber) {
// const num = parseInt(versionNumber[0], 10); //
// if (num < 9 && !this.hasShownVersionAlert) {
// this.hasShownVersionAlert = true; //
// uni.showModal({
// title: "",
// content: `使`,
// showCancel: false, //
// confirmText: "", //
// success: (res) => {
// if (res.confirm) {
// console.log("");
// this.hasShownVersionAlert = false; //
// }
// }
// })
// } else {
// console.log(` ${num} 9`);
// }
// } else {
// console.log("");
// }
const pairs = processedString.split(';').filter(Boolean);
console.log('分割后的数据对:', pairs);
// console.log(':', pairs);
const showObject = {};
const pSetObjects = {};
// p_set
for (let i = 1; i <= 6; i++) {
pSetObjects[`p_set${i}`] = [0, 0, 0, 0, 0];
}
//
pairs.forEach(pair => {
const [key, value] = pair.split(':');
@ -1348,7 +1412,6 @@
this.ver_data = pSetObjects;
this.jstimeobj = pSetObjects;
this.showobj = showObject;
//
this.yschecked = this.showobj.showArray[1] !== 1;
this.etchecked = this.showobj.showArray[0] !== 1;
@ -1360,13 +1423,11 @@
const remainingMinutes = diffMinutes % 60;
return { hours: diffHours, minutes: remainingMinutes };
};
const formatTime = (seconds) => {
const minutes = Math.floor(seconds / 60);
const remainingSeconds = seconds % 60;
return `${minutes}${remainingSeconds}`;
};
const getTimeFromArray = (timeArray) => {
if (!timeArray || timeArray.length < 2) return null;
const [hour, minute] = timeArray;
@ -1374,24 +1435,19 @@
date.setHours(hour, minute, 0, 0);
return date;
};
let nextTime = null;
let nextTimeDiff = null;
let nextWaterDuration = null;
let prevTime = null;
for (const key in this.ver_data) {
if (this.ver_data.hasOwnProperty(key) && this.ver_data[key][3] === 1) {
const timeArray = this.ver_data[key];
const timeDate = getTimeFromArray(timeArray);
if (!timeDate) continue;
const diff = calculateTimeDifference(timeDate, new Date());
const interval = timeArray[4] || 0;
//
const shouldWaterToday = interval === 0 || (currentDay % interval === 0);
if (timeDate > new Date() && shouldWaterToday) {
if (!nextTime || (diff.hours * 60 + diff.minutes < (nextTimeDiff?.hours || 0) * 60 + (nextTimeDiff?.minutes || 0))) {
nextTimeDiff = diff;
@ -1403,13 +1459,11 @@
}
}
}
//
this.xctime = nextTime ? `${nextTimeDiff.hours}${nextTimeDiff.minutes}` : '无距离下次浇水时间';
this.xctimesc = nextWaterDuration || '未知';
this.sctimejs = prevTime ? prevTime.toTimeString().slice(0, 5) : '无上次浇水时间';
this.xctimesj = nextTime ? nextTime.toTimeString().slice(0, 5) : '无下次浇水时间';
console.log('解析后的数据:', {
ver_data: this.ver_data,
showobj: this.showobj,
@ -1418,16 +1472,19 @@
prevTime: this.sctimejs
});
this.xinp = this.showobj.showArray[this.showobj.showArray.length - 1]
console.log(this.showobj.showArray,this.showobj.showArray[6],this.showobj.showArray[this.showobj.showArray.length - 1],'02020202020');
if(this.showobj.showArray[6] && this.showobj.showArray[7]){
// if(this.showobj.showArray[6] != '' && this.showobj.showArray[7] != ''){
// console.log('111111111111111111111111111111111111111111111111111111111111111');
//
const yiStr = String(this.showobj.showArray[6])
const erStr = String(this.showobj.showArray[7])
// console.log('22222222222222222222222222222222222222222222222222222',yiStr,erStr);
// 1<10
let yi = yiStr.length === 1 ? '0' + yiStr : yiStr
let er = erStr.length === 1 ? '0' + erStr : erStr
// console.log('33333333333333333333333333333333333333333333333333',yi,er);
this.devicetime = yi + ':' + er
}
// console.log(this.devicetime,'this.devicetimethis.devicetimethis.devicetimethis.devicetimethis.devicetimethis.devicetimethis.devicetimethis.devicetime');
// }
},
//
initDisconnectTimer() {
@ -1438,12 +1495,10 @@
}
}, 600000)
},
//
resetDisconnectTimer() {
this.initDisconnectTimer()
},
//
clearDisconnectTimer() {
if(this.disconnectTimer) {
@ -1451,7 +1506,6 @@
this.disconnectTimer = null
}
},
//
disconnectBluetooth() {
if(this.deviceId) {
@ -1475,14 +1529,12 @@
})
}
},
//
handleUserAction() {
if(this.vardataflag === 3) {
this.resetDisconnectTimer()
}
},
//
getTimeDisplay(setKey) {
const set = this.ver_data[setKey];
@ -1491,12 +1543,48 @@
}
return '--:--';
},
//
isCurrentTime(setKey) {
const set = this.ver_data[setKey];
return set && set[0] == this.xctimesj.slice(0,2) && set[1] == this.xctimesj.slice(-2);
}
},
//
getTimeDifference(hour, minute) {
if (!this.devicetime) return Infinity;
const [currentHour, currentMinute] = this.devicetime.split(':').map(Number);
const currentTotalMinutes = currentHour * 60 + currentMinute;
const targetTotalMinutes = hour * 60 + minute;
//
let diff = targetTotalMinutes - currentTotalMinutes;
// 24
if (diff <= 0) {
diff += 1440;
}
return diff;
},
//
shouldShowIcon(pSetIndex) {
const pSet = this.ver_data[`p_set${pSetIndex}`];
//
if (!pSet || pSet[3] !== 1) return false;
const currentDiff = this.getTimeDifference(pSet[0], pSet[1]);
//
for (let i = 1; i <= 6; i++) {
const checkSet = this.ver_data[`p_set${i}`];
if (checkSet && checkSet[3] === 1) {
const checkDiff = this.getTimeDifference(checkSet[0], checkSet[1]);
//
if (checkDiff < currentDiff || (checkDiff === currentDiff && i < pSetIndex)) {
return false;
}
}
}
return true;
},
}
}
</script>