fix:报警明细
This commit is contained in:
@ -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,66 +577,45 @@ export default {
|
||||
// 检查报警条件
|
||||
checkAlerts(mqttData) {
|
||||
const currentTime = this.formatDateTime(new Date())
|
||||
console.log('====mqttData', mqttData)
|
||||
|
||||
// 只处理WSD设备的数据
|
||||
if (mqttData.deviceType !== 'WSD') {
|
||||
return
|
||||
}
|
||||
console.log('====mqttData', mqttData)
|
||||
// {
|
||||
// "deviceType": "WSD",
|
||||
// "temperature": 0,
|
||||
// "humidity": 0,
|
||||
// "cleanliness": 0
|
||||
// }
|
||||
|
||||
// 获取MQTT原始数据
|
||||
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 !== undefined && mqttTemperature !== 0 && (mqttTemperature < this.temperatureRange.min || mqttTemperature > this.temperatureRange.max)) {
|
||||
if (mqttTemperature < this.temperatureRange.min || mqttTemperature > this.temperatureRange.max) {
|
||||
const alert = {
|
||||
// content: `温度传感器异常,读数${mqttTemperature}°C超出控制范围${this.temperatureRange.min}°C-${this.temperatureRange.max}°C`,
|
||||
content: `温度超出控制范围`,
|
||||
category: "传感器故障",
|
||||
content: `温度超出范围,${mqttTemperature}°C超出控制范围${this.temperatureRange.min}°C-${this.temperatureRange.max}°C`,
|
||||
category: "温度报警",
|
||||
alertTime: currentTime,
|
||||
level: "高危",
|
||||
action: "检查温度传感器连接",
|
||||
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 !== undefined && (mqttHumidity < this.humidityRange.min || mqttHumidity > this.humidityRange.max)) {
|
||||
if (mqttHumidity < this.humidityRange.min || mqttHumidity > this.humidityRange.max) {
|
||||
const alert = {
|
||||
// content: `湿度传感器异常,读数${mqttHumidity}%超出控制范围${this.humidityRange.min}%-${this.humidityRange.max}%`,
|
||||
content: `温度超出控制范围`,
|
||||
category: "传感器故障",
|
||||
content: `湿度超出范围,${mqttHumidity}%超出控制范围${this.humidityRange.min}%-${this.humidityRange.max}%`,
|
||||
category: "湿度报警",
|
||||
alertTime: currentTime,
|
||||
level: "高危",
|
||||
action: "检查湿度传感器连接",
|
||||
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原始数据)
|
||||
@ -648,7 +626,7 @@ export default {
|
||||
if (deviationPercent > 30) {
|
||||
const alert = {
|
||||
// content: `温度偏差过大,实际${mqttTemperature}°C与设定${this.targetTemperature}°C偏差${deviationPercent.toFixed(1)}%`,
|
||||
content: `温度偏差过大`,
|
||||
content: `温度偏差过大,${mqttTemperature}°C与设定${this.targetTemperature}°C偏差${deviationPercent.toFixed(1)}%`,
|
||||
category: "温度控制异常",
|
||||
alertTime: currentTime,
|
||||
level: "中危",
|
||||
@ -668,7 +646,7 @@ export default {
|
||||
if (deviationPercent > 30) {
|
||||
const alert = {
|
||||
// content: `湿度偏差过大,实际${mqttHumidity}%与设定${this.targetHumidity}%偏差${deviationPercent.toFixed(1)}%`,
|
||||
content: `湿度偏差过大`,
|
||||
content: `湿度偏差过大,${mqttHumidity}%与设定${this.targetHumidity}%偏差${deviationPercent.toFixed(1)}%`,
|
||||
category: "湿度控制异常",
|
||||
alertTime: currentTime,
|
||||
level: "中危",
|
||||
@ -679,26 +657,37 @@ export default {
|
||||
this.logAlert(alert)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
if (mqttData.deviceType === 'AC') {
|
||||
// 3. 空调故障报警:acFaultStatus为1
|
||||
if (this.acFaultStatus === 1) {
|
||||
const alert = {
|
||||
// content: "空调故障,需要手动设置温度",
|
||||
content: "空调报警",
|
||||
category: "空调故障",
|
||||
alertTime: currentTime,
|
||||
level: "高危",
|
||||
action: "手动调节空调温度",
|
||||
actionTime: currentTime,
|
||||
deviceId: "AC_001"
|
||||
}
|
||||
this.logAlert(alert)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 记录报警到控制台并调用创建告警接口
|
||||
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)
|
||||
}
|
||||
},
|
||||
|
||||
// 降低目标温度
|
||||
|
||||
@ -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) => {
|
||||
|
||||
@ -150,7 +150,7 @@ class MqttDataManager {
|
||||
// 可以添加其他空调参数
|
||||
break
|
||||
|
||||
case 'PM': // PM2.5传感器
|
||||
case 'PM25': // PM2.5传感器
|
||||
if (data.PM25 !== undefined) {
|
||||
parsedData.pm25 = parseFloat(data.PM25)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user