fix:报警明细
This commit is contained in:
@ -309,7 +309,6 @@ export default {
|
|||||||
isHumidityInputFocused: false,
|
isHumidityInputFocused: false,
|
||||||
// 报警相关数据
|
// 报警相关数据
|
||||||
acFaultStatus: 0, // 空调故障状态,1表示故障
|
acFaultStatus: 0, // 空调故障状态,1表示故障
|
||||||
alertHistory: [], // 报警历史记录
|
|
||||||
// 系统启动事件相关
|
// 系统启动事件相关
|
||||||
hasCreatedStartupEvent: false, // 是否已创建启动事件
|
hasCreatedStartupEvent: false, // 是否已创建启动事件
|
||||||
acStatus: 4,
|
acStatus: 4,
|
||||||
@ -539,7 +538,6 @@ export default {
|
|||||||
this.lastUpdate = data.time || new Date().toLocaleString('zh-CN')
|
this.lastUpdate = data.time || new Date().toLocaleString('zh-CN')
|
||||||
|
|
||||||
// 检查报警条件,传入MQTT原始数据
|
// 检查报警条件,传入MQTT原始数据
|
||||||
this.checkAlerts(data)
|
|
||||||
} else if (data.deviceType === 'AC') {
|
} else if (data.deviceType === 'AC') {
|
||||||
// 处理空调AC数据
|
// 处理空调AC数据
|
||||||
if (data.faultStatus !== undefined) {
|
if (data.faultStatus !== undefined) {
|
||||||
@ -561,6 +559,7 @@ export default {
|
|||||||
console.log('⚠️ 非WSD、AC、PM25设备数据,跳过更新:', data.deviceType)
|
console.log('⚠️ 非WSD、AC、PM25设备数据,跳过更新:', data.deviceType)
|
||||||
// 处理其他设备数据
|
// 处理其他设备数据
|
||||||
}
|
}
|
||||||
|
this.checkAlerts(data)
|
||||||
},
|
},
|
||||||
|
|
||||||
// 格式化日期时间为指定格式
|
// 格式化日期时间为指定格式
|
||||||
@ -578,66 +577,45 @@ export default {
|
|||||||
// 检查报警条件
|
// 检查报警条件
|
||||||
checkAlerts(mqttData) {
|
checkAlerts(mqttData) {
|
||||||
const currentTime = this.formatDateTime(new Date())
|
const currentTime = this.formatDateTime(new Date())
|
||||||
|
console.log('====mqttData', mqttData)
|
||||||
|
|
||||||
// 只处理WSD设备的数据
|
// 只处理WSD设备的数据
|
||||||
if (mqttData.deviceType !== 'WSD') {
|
if (mqttData.deviceType === 'WSD') {
|
||||||
return
|
|
||||||
}
|
|
||||||
console.log('====mqttData', mqttData)
|
|
||||||
// {
|
|
||||||
// "deviceType": "WSD",
|
|
||||||
// "temperature": 0,
|
|
||||||
// "humidity": 0,
|
|
||||||
// "cleanliness": 0
|
|
||||||
// }
|
|
||||||
|
|
||||||
// 获取MQTT原始数据
|
|
||||||
const mqttTemperature = mqttData.temperature
|
const mqttTemperature = mqttData.temperature
|
||||||
const mqttHumidity = mqttData.humidity
|
const mqttHumidity = mqttData.humidity
|
||||||
|
|
||||||
|
if (mqttTemperature !== undefined && mqttTemperature !== 0 && this.temperatureRange.min !== 0 && this.temperatureRange.max !== 0) {
|
||||||
// 1. 温度报警:使用环境控制设置的区间(使用MQTT原始数据)
|
// 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 = {
|
const alert = {
|
||||||
// content: `温度传感器异常,读数${mqttTemperature}°C超出控制范围${this.temperatureRange.min}°C-${this.temperatureRange.max}°C`,
|
// content: `温度传感器异常,读数${mqttTemperature}°C超出控制范围${this.temperatureRange.min}°C-${this.temperatureRange.max}°C`,
|
||||||
content: `温度超出控制范围`,
|
content: `温度超出范围,${mqttTemperature}°C超出控制范围${this.temperatureRange.min}°C-${this.temperatureRange.max}°C`,
|
||||||
category: "传感器故障",
|
category: "温度报警",
|
||||||
alertTime: currentTime,
|
alertTime: currentTime,
|
||||||
level: "高危",
|
level: "中危",
|
||||||
action: "检查温度传感器连接",
|
action: "检查温度",
|
||||||
actionTime: currentTime,
|
actionTime: currentTime,
|
||||||
deviceId: "WSD_001"
|
deviceId: "WSD_001"
|
||||||
}
|
}
|
||||||
this.logAlert(alert)
|
this.logAlert(alert)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mqttHumidity !== undefined && mqttHumidity !==0 && this.humidityRange.min !==0 && this.humidityRange.max !==0) {
|
||||||
// 2. 湿度报警:使用环境控制设置的区间(使用MQTT原始数据)
|
// 2. 湿度报警:使用环境控制设置的区间(使用MQTT原始数据)
|
||||||
if (mqttHumidity !== undefined && (mqttHumidity < this.humidityRange.min || mqttHumidity > this.humidityRange.max)) {
|
if (mqttHumidity < this.humidityRange.min || mqttHumidity > this.humidityRange.max) {
|
||||||
const alert = {
|
const alert = {
|
||||||
// content: `湿度传感器异常,读数${mqttHumidity}%超出控制范围${this.humidityRange.min}%-${this.humidityRange.max}%`,
|
// content: `湿度传感器异常,读数${mqttHumidity}%超出控制范围${this.humidityRange.min}%-${this.humidityRange.max}%`,
|
||||||
content: `温度超出控制范围`,
|
content: `湿度超出范围,${mqttHumidity}%超出控制范围${this.humidityRange.min}%-${this.humidityRange.max}%`,
|
||||||
category: "传感器故障",
|
category: "湿度报警",
|
||||||
alertTime: currentTime,
|
alertTime: currentTime,
|
||||||
level: "高危",
|
level: "中危",
|
||||||
action: "检查湿度传感器连接",
|
action: "检查湿度",
|
||||||
actionTime: currentTime,
|
actionTime: currentTime,
|
||||||
deviceId: "WSD_001"
|
deviceId: "WSD_001"
|
||||||
}
|
}
|
||||||
this.logAlert(alert)
|
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原始数据)
|
// 4. 温度偏差报警:|温湿度计温度 - 空调设定温度| / 空调设定温度 > 30%(使用MQTT原始数据)
|
||||||
@ -648,7 +626,7 @@ export default {
|
|||||||
if (deviationPercent > 30) {
|
if (deviationPercent > 30) {
|
||||||
const alert = {
|
const alert = {
|
||||||
// content: `温度偏差过大,实际${mqttTemperature}°C与设定${this.targetTemperature}°C偏差${deviationPercent.toFixed(1)}%`,
|
// content: `温度偏差过大,实际${mqttTemperature}°C与设定${this.targetTemperature}°C偏差${deviationPercent.toFixed(1)}%`,
|
||||||
content: `温度偏差过大`,
|
content: `温度偏差过大,${mqttTemperature}°C与设定${this.targetTemperature}°C偏差${deviationPercent.toFixed(1)}%`,
|
||||||
category: "温度控制异常",
|
category: "温度控制异常",
|
||||||
alertTime: currentTime,
|
alertTime: currentTime,
|
||||||
level: "中危",
|
level: "中危",
|
||||||
@ -668,7 +646,7 @@ export default {
|
|||||||
if (deviationPercent > 30) {
|
if (deviationPercent > 30) {
|
||||||
const alert = {
|
const alert = {
|
||||||
// content: `湿度偏差过大,实际${mqttHumidity}%与设定${this.targetHumidity}%偏差${deviationPercent.toFixed(1)}%`,
|
// content: `湿度偏差过大,实际${mqttHumidity}%与设定${this.targetHumidity}%偏差${deviationPercent.toFixed(1)}%`,
|
||||||
content: `湿度偏差过大`,
|
content: `湿度偏差过大,${mqttHumidity}%与设定${this.targetHumidity}%偏差${deviationPercent.toFixed(1)}%`,
|
||||||
category: "湿度控制异常",
|
category: "湿度控制异常",
|
||||||
alertTime: currentTime,
|
alertTime: currentTime,
|
||||||
level: "中危",
|
level: "中危",
|
||||||
@ -679,26 +657,37 @@ export default {
|
|||||||
this.logAlert(alert)
|
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) {
|
async logAlert(alert) {
|
||||||
console.log('🚨 报警触发:', JSON.stringify(alert, null, 2))
|
console.log('🚨 报警触发:', JSON.stringify(alert, null, 2))
|
||||||
// this.alertHistory.push(alert)
|
// 调用创建告警接口
|
||||||
|
try {
|
||||||
// // 调用创建告警接口
|
console.log('📤 正在创建告警记录...')
|
||||||
// try {
|
await alertApi.create(alert)
|
||||||
// console.log('📤 正在创建告警记录...')
|
} catch (error) {
|
||||||
// const response = await alertApi.create(alert)
|
console.error('❌ 告警记录创建失败:', error)
|
||||||
// console.log('✅ 告警记录创建成功:', response)
|
}
|
||||||
// } catch (error) {
|
|
||||||
// console.error('❌ 告警记录创建失败:', error)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // 限制报警历史记录数量,避免内存溢出
|
|
||||||
// if (this.alertHistory.length > 100) {
|
|
||||||
// this.alertHistory = this.alertHistory.slice(-50)
|
|
||||||
// }
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// 降低目标温度
|
// 降低目标温度
|
||||||
|
|||||||
@ -40,17 +40,8 @@ class HttpService {
|
|||||||
|
|
||||||
// 构建完整URL
|
// 构建完整URL
|
||||||
const fullUrl = url.startsWith('http') ? url : `${this.baseURL}${url}`
|
const fullUrl = url.startsWith('http') ? url : `${this.baseURL}${url}`
|
||||||
|
|
||||||
// 合并请求头
|
// 合并请求头
|
||||||
const requestHeaders = { ...this.defaultHeaders, ...headers }
|
const requestHeaders = { ...this.defaultHeaders, ...headers }
|
||||||
|
|
||||||
console.log('🌐 HTTP请求:', {
|
|
||||||
url: fullUrl,
|
|
||||||
method,
|
|
||||||
data,
|
|
||||||
headers: requestHeaders
|
|
||||||
})
|
|
||||||
|
|
||||||
uni.request({
|
uni.request({
|
||||||
url: fullUrl,
|
url: fullUrl,
|
||||||
method,
|
method,
|
||||||
@ -58,8 +49,6 @@ class HttpService {
|
|||||||
header: requestHeaders,
|
header: requestHeaders,
|
||||||
timeout,
|
timeout,
|
||||||
success: (response) => {
|
success: (response) => {
|
||||||
console.log('✅ HTTP响应:', response)
|
|
||||||
|
|
||||||
// 检查HTTP状态码
|
// 检查HTTP状态码
|
||||||
if (response.statusCode >= 200 && response.statusCode < 300) {
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
||||||
resolve(response.data)
|
resolve(response.data)
|
||||||
@ -119,13 +108,6 @@ class HttpService {
|
|||||||
upload(url, filePath, formData = {}, options = {}) {
|
upload(url, filePath, formData = {}, options = {}) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const fullUrl = url.startsWith('http') ? url : `${this.baseURL}${url}`
|
const fullUrl = url.startsWith('http') ? url : `${this.baseURL}${url}`
|
||||||
|
|
||||||
console.log('📤 文件上传:', {
|
|
||||||
url: fullUrl,
|
|
||||||
filePath,
|
|
||||||
formData
|
|
||||||
})
|
|
||||||
|
|
||||||
uni.uploadFile({
|
uni.uploadFile({
|
||||||
url: fullUrl,
|
url: fullUrl,
|
||||||
filePath,
|
filePath,
|
||||||
@ -133,7 +115,6 @@ class HttpService {
|
|||||||
formData,
|
formData,
|
||||||
header: { ...this.defaultHeaders, ...options.headers },
|
header: { ...this.defaultHeaders, ...options.headers },
|
||||||
success: (response) => {
|
success: (response) => {
|
||||||
console.log('✅ 文件上传成功:', response)
|
|
||||||
try {
|
try {
|
||||||
const data = JSON.parse(response.data)
|
const data = JSON.parse(response.data)
|
||||||
resolve(data)
|
resolve(data)
|
||||||
@ -153,14 +134,10 @@ class HttpService {
|
|||||||
download(url, options = {}) {
|
download(url, options = {}) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const fullUrl = url.startsWith('http') ? url : `${this.baseURL}${url}`
|
const fullUrl = url.startsWith('http') ? url : `${this.baseURL}${url}`
|
||||||
|
|
||||||
console.log('📥 文件下载:', fullUrl)
|
|
||||||
|
|
||||||
uni.downloadFile({
|
uni.downloadFile({
|
||||||
url: fullUrl,
|
url: fullUrl,
|
||||||
header: { ...this.defaultHeaders, ...options.headers },
|
header: { ...this.defaultHeaders, ...options.headers },
|
||||||
success: (response) => {
|
success: (response) => {
|
||||||
console.log('✅ 文件下载成功:', response)
|
|
||||||
resolve(response)
|
resolve(response)
|
||||||
},
|
},
|
||||||
fail: (error) => {
|
fail: (error) => {
|
||||||
|
|||||||
@ -150,7 +150,7 @@ class MqttDataManager {
|
|||||||
// 可以添加其他空调参数
|
// 可以添加其他空调参数
|
||||||
break
|
break
|
||||||
|
|
||||||
case 'PM': // PM2.5传感器
|
case 'PM25': // PM2.5传感器
|
||||||
if (data.PM25 !== undefined) {
|
if (data.PM25 !== undefined) {
|
||||||
parsedData.pm25 = parseFloat(data.PM25)
|
parsedData.pm25 = parseFloat(data.PM25)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user