From 05ce90ef754847704fbb934457f18423f93ebc2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=89=E6=B5=A9=E8=8C=B9?= Date: Thu, 9 Oct 2025 18:02:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=8A=A5=E8=AD=A6=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/environment/index.vue | 201 +++++++++++++++----------------- src/utils/http.js | 23 ---- src/utils/mqttDataManager.js | 2 +- 3 files changed, 96 insertions(+), 130 deletions(-) diff --git a/src/pages/environment/index.vue b/src/pages/environment/index.vue index cb19f3d..a08c296 100644 --- a/src/pages/environment/index.vue +++ b/src/pages/environment/index.vue @@ -309,7 +309,6 @@ export default { isHumidityInputFocused: false, // 报警相关数据 acFaultStatus: 0, // 空调故障状态,1表示故障 - alertHistory: [], // 报警历史记录 // 系统启动事件相关 hasCreatedStartupEvent: false, // 是否已创建启动事件 acStatus: 4, @@ -539,7 +538,6 @@ export default { this.lastUpdate = data.time || new Date().toLocaleString('zh-CN') // 检查报警条件,传入MQTT原始数据 - this.checkAlerts(data) } else if (data.deviceType === 'AC') { // 处理空调AC数据 if (data.faultStatus !== undefined) { @@ -561,6 +559,7 @@ export default { console.log('⚠️ 非WSD、AC、PM25设备数据,跳过更新:', data.deviceType) // 处理其他设备数据 } + this.checkAlerts(data) }, // 格式化日期时间为指定格式 @@ -578,101 +577,99 @@ export default { // 检查报警条件 checkAlerts(mqttData) { const currentTime = this.formatDateTime(new Date()) + console.log('====mqttData', mqttData) // 只处理WSD设备的数据 - if (mqttData.deviceType !== 'WSD') { + if (mqttData.deviceType === 'WSD') { + const mqttTemperature = mqttData.temperature + const mqttHumidity = mqttData.humidity + + if (mqttTemperature !== undefined && mqttTemperature !== 0 && this.temperatureRange.min !== 0 && this.temperatureRange.max !== 0) { + // 1. 温度报警:使用环境控制设置的区间(使用MQTT原始数据) + if (mqttTemperature < this.temperatureRange.min || mqttTemperature > this.temperatureRange.max) { + const alert = { + // content: `温度传感器异常,读数${mqttTemperature}°C超出控制范围${this.temperatureRange.min}°C-${this.temperatureRange.max}°C`, + content: `温度超出范围,${mqttTemperature}°C超出控制范围${this.temperatureRange.min}°C-${this.temperatureRange.max}°C`, + category: "温度报警", + alertTime: currentTime, + level: "中危", + action: "检查温度", + actionTime: currentTime, + deviceId: "WSD_001" + } + this.logAlert(alert) + } + } + + if (mqttHumidity !== undefined && mqttHumidity !==0 && this.humidityRange.min !==0 && this.humidityRange.max !==0) { + // 2. 湿度报警:使用环境控制设置的区间(使用MQTT原始数据) + if (mqttHumidity < this.humidityRange.min || mqttHumidity > this.humidityRange.max) { + const alert = { + // content: `湿度传感器异常,读数${mqttHumidity}%超出控制范围${this.humidityRange.min}%-${this.humidityRange.max}%`, + content: `湿度超出范围,${mqttHumidity}%超出控制范围${this.humidityRange.min}%-${this.humidityRange.max}%`, + category: "湿度报警", + alertTime: currentTime, + level: "中危", + action: "检查湿度", + actionTime: currentTime, + deviceId: "WSD_001" + } + this.logAlert(alert) + } + } + + // 4. 温度偏差报警:|温湿度计温度 - 空调设定温度| / 空调设定温度 > 30%(使用MQTT原始数据) + if (mqttTemperature !== undefined && this.targetTemperature > 0) { + const temperatureDiff = Math.abs(mqttTemperature - this.targetTemperature) + const deviationPercent = (temperatureDiff / this.targetTemperature) * 100 + + if (deviationPercent > 30) { + const alert = { + // content: `温度偏差过大,实际${mqttTemperature}°C与设定${this.targetTemperature}°C偏差${deviationPercent.toFixed(1)}%`, + content: `温度偏差过大,${mqttTemperature}°C与设定${this.targetTemperature}°C偏差${deviationPercent.toFixed(1)}%`, + category: "温度控制异常", + alertTime: currentTime, + level: "中危", + action: "调整空调设定温度", + actionTime: currentTime, + deviceId: "AC_001" + } + this.logAlert(alert) + } + } + + // 5. 湿度偏差报警:|温湿度计湿度 - 空调设定湿度| / 空调设定湿度 > 30%(使用MQTT原始数据) + if (mqttHumidity !== undefined && this.targetHumidity > 0) { + const humidityDiff = Math.abs(mqttHumidity - this.targetHumidity) + const deviationPercent = (humidityDiff / this.targetHumidity) * 100 + + if (deviationPercent > 30) { + const alert = { + // content: `湿度偏差过大,实际${mqttHumidity}%与设定${this.targetHumidity}%偏差${deviationPercent.toFixed(1)}%`, + content: `湿度偏差过大,${mqttHumidity}%与设定${this.targetHumidity}%偏差${deviationPercent.toFixed(1)}%`, + category: "湿度控制异常", + alertTime: currentTime, + level: "中危", + action: "调整空调设定湿度", + actionTime: currentTime, + deviceId: "AC_001" + } + this.logAlert(alert) + } + } return } - console.log('====mqttData', mqttData) - // { - // "deviceType": "WSD", - // "temperature": 0, - // "humidity": 0, - // "cleanliness": 0 - // } - - // 获取MQTT原始数据 - const mqttTemperature = mqttData.temperature - const mqttHumidity = mqttData.humidity - - // 1. 温度报警:使用环境控制设置的区间(使用MQTT原始数据) - if (mqttTemperature !== undefined && mqttTemperature !== 0 && (mqttTemperature < this.temperatureRange.min || mqttTemperature > this.temperatureRange.max)) { - const alert = { - // content: `温度传感器异常,读数${mqttTemperature}°C超出控制范围${this.temperatureRange.min}°C-${this.temperatureRange.max}°C`, - content: `温度超出控制范围`, - category: "传感器故障", - alertTime: currentTime, - level: "高危", - action: "检查温度传感器连接", - actionTime: currentTime, - deviceId: "WSD_001" - } - this.logAlert(alert) - } - - // 2. 湿度报警:使用环境控制设置的区间(使用MQTT原始数据) - if (mqttHumidity !== undefined && (mqttHumidity < this.humidityRange.min || mqttHumidity > this.humidityRange.max)) { - const alert = { - // content: `湿度传感器异常,读数${mqttHumidity}%超出控制范围${this.humidityRange.min}%-${this.humidityRange.max}%`, - content: `温度超出控制范围`, - category: "传感器故障", - alertTime: currentTime, - level: "高危", - action: "检查湿度传感器连接", - actionTime: currentTime, - deviceId: "WSD_001" - } - this.logAlert(alert) - } - - // 3. 空调故障报警:acFaultStatus为1 - if (this.acFaultStatus === 1) { - const alert = { - // content: "空调故障,需要手动设置温度", - content: "空调报警", - category: "设备故障", - alertTime: currentTime, - level: "高危", - action: "手动调节空调温度", - actionTime: currentTime, - deviceId: "AC_001" - } - this.logAlert(alert) - } - - // 4. 温度偏差报警:|温湿度计温度 - 空调设定温度| / 空调设定温度 > 30%(使用MQTT原始数据) - if (mqttTemperature !== undefined && this.targetTemperature > 0) { - const temperatureDiff = Math.abs(mqttTemperature - this.targetTemperature) - const deviationPercent = (temperatureDiff / this.targetTemperature) * 100 - - if (deviationPercent > 30) { + + if (mqttData.deviceType === 'AC') { + // 3. 空调故障报警:acFaultStatus为1 + if (this.acFaultStatus === 1) { const alert = { - // content: `温度偏差过大,实际${mqttTemperature}°C与设定${this.targetTemperature}°C偏差${deviationPercent.toFixed(1)}%`, - content: `温度偏差过大`, - category: "温度控制异常", + // content: "空调故障,需要手动设置温度", + content: "空调报警", + category: "空调故障", alertTime: currentTime, - level: "中危", - action: "调整空调设定温度", - actionTime: currentTime, - deviceId: "AC_001" - } - this.logAlert(alert) - } - } - - // 5. 湿度偏差报警:|温湿度计湿度 - 空调设定湿度| / 空调设定湿度 > 30%(使用MQTT原始数据) - if (mqttHumidity !== undefined && this.targetHumidity > 0) { - const humidityDiff = Math.abs(mqttHumidity - this.targetHumidity) - const deviationPercent = (humidityDiff / this.targetHumidity) * 100 - - if (deviationPercent > 30) { - const alert = { - // content: `湿度偏差过大,实际${mqttHumidity}%与设定${this.targetHumidity}%偏差${deviationPercent.toFixed(1)}%`, - content: `湿度偏差过大`, - category: "湿度控制异常", - alertTime: currentTime, - level: "中危", - action: "调整空调设定湿度", + level: "高危", + action: "手动调节空调温度", actionTime: currentTime, deviceId: "AC_001" } @@ -684,21 +681,13 @@ export default { // 记录报警到控制台并调用创建告警接口 async logAlert(alert) { console.log('🚨 报警触发:', JSON.stringify(alert, null, 2)) - // this.alertHistory.push(alert) - - // // 调用创建告警接口 - // try { - // console.log('📤 正在创建告警记录...') - // const response = await alertApi.create(alert) - // console.log('✅ 告警记录创建成功:', response) - // } catch (error) { - // console.error('❌ 告警记录创建失败:', error) - // } - - // // 限制报警历史记录数量,避免内存溢出 - // if (this.alertHistory.length > 100) { - // this.alertHistory = this.alertHistory.slice(-50) - // } + // 调用创建告警接口 + try { + console.log('📤 正在创建告警记录...') + await alertApi.create(alert) + } catch (error) { + console.error('❌ 告警记录创建失败:', error) + } }, // 降低目标温度 diff --git a/src/utils/http.js b/src/utils/http.js index 62fc9b2..870cdfc 100644 --- a/src/utils/http.js +++ b/src/utils/http.js @@ -40,17 +40,8 @@ class HttpService { // 构建完整URL const fullUrl = url.startsWith('http') ? url : `${this.baseURL}${url}` - // 合并请求头 const requestHeaders = { ...this.defaultHeaders, ...headers } - - console.log('🌐 HTTP请求:', { - url: fullUrl, - method, - data, - headers: requestHeaders - }) - uni.request({ url: fullUrl, method, @@ -58,8 +49,6 @@ class HttpService { header: requestHeaders, timeout, success: (response) => { - console.log('✅ HTTP响应:', response) - // 检查HTTP状态码 if (response.statusCode >= 200 && response.statusCode < 300) { resolve(response.data) @@ -119,13 +108,6 @@ class HttpService { upload(url, filePath, formData = {}, options = {}) { return new Promise((resolve, reject) => { const fullUrl = url.startsWith('http') ? url : `${this.baseURL}${url}` - - console.log('📤 文件上传:', { - url: fullUrl, - filePath, - formData - }) - uni.uploadFile({ url: fullUrl, filePath, @@ -133,7 +115,6 @@ class HttpService { formData, header: { ...this.defaultHeaders, ...options.headers }, success: (response) => { - console.log('✅ 文件上传成功:', response) try { const data = JSON.parse(response.data) resolve(data) @@ -153,14 +134,10 @@ class HttpService { download(url, options = {}) { return new Promise((resolve, reject) => { const fullUrl = url.startsWith('http') ? url : `${this.baseURL}${url}` - - console.log('📥 文件下载:', fullUrl) - uni.downloadFile({ url: fullUrl, header: { ...this.defaultHeaders, ...options.headers }, success: (response) => { - console.log('✅ 文件下载成功:', response) resolve(response) }, fail: (error) => { diff --git a/src/utils/mqttDataManager.js b/src/utils/mqttDataManager.js index d6dbe70..6b45e27 100644 --- a/src/utils/mqttDataManager.js +++ b/src/utils/mqttDataManager.js @@ -150,7 +150,7 @@ class MqttDataManager { // 可以添加其他空调参数 break - case 'PM': // PM2.5传感器 + case 'PM25': // PM2.5传感器 if (data.PM25 !== undefined) { parsedData.pm25 = parseFloat(data.PM25) }