|
@@ -37,16 +37,16 @@ public class DefaultSensorAlarmChecker implements SensorAlarmChecker {
|
|
|
log.warn("没有找到设备 {} 的阈值配置", sensorData.getDeviceId());
|
|
|
return false;
|
|
|
}
|
|
|
- final String deviceName = threshold.getMonitorTargetRegion().getDeviceName();
|
|
|
+ final String deviceName = threshold.getMonitorTargetRegion().getName();
|
|
|
// 检查传感器数据并触发报警
|
|
|
boolean alarmTriggered = false;
|
|
|
- if (sensorData.getTemperature() != null) {
|
|
|
+ if (isNull(sensorData.getTemperature())) {
|
|
|
alarmTriggered = checkThreshold(sensorData.getTemperature(), threshold.getTemperatureUp(), threshold.getTemperatureDown(), "温度", deviceName);
|
|
|
}
|
|
|
- if (sensorData.getHumidity() != null) {
|
|
|
+ if (isNull(sensorData.getHumidity())) {
|
|
|
alarmTriggered |= checkThreshold(sensorData.getHumidity(), threshold.getHumidityUp(), threshold.getHumidityDown(), "湿度", deviceName);
|
|
|
}
|
|
|
- if (sensorData.getCo2() != null) {
|
|
|
+ if (isNull(sensorData.getCo2())) {
|
|
|
alarmTriggered |= checkThreshold(sensorData.getCo2(), threshold.getCo2Up(), threshold.getCo2Down(), "二氧化碳", deviceName);
|
|
|
}
|
|
|
return alarmTriggered;
|
|
@@ -90,7 +90,7 @@ public class DefaultSensorAlarmChecker implements SensorAlarmChecker {
|
|
|
*/
|
|
|
private void publishAlarm(String alarmType, Float value, String unit, String deviceName, String time, float threshold) {
|
|
|
// 获取对应的报警消息模板
|
|
|
- String alarmMessage = getAlarmMessage(alarmType, value, unit, deviceName, time);
|
|
|
+ String alarmMessage = getAlarmMessage(alarmType, value, unit, deviceName, time, threshold);
|
|
|
// 构建 SensorAlarm 对象
|
|
|
SensorAlarm sensorAlarm = new SensorAlarm();
|
|
|
sensorAlarm.setAlarmType(alarmType); // 设置报警类型(例如 温度超标、湿度过低等)
|
|
@@ -103,10 +103,9 @@ public class DefaultSensorAlarmChecker implements SensorAlarmChecker {
|
|
|
sensorAlarm.setAlarmTime(time); // 设置报警时间
|
|
|
sensorAlarm.setMessage(alarmMessage); // 设置报警消息
|
|
|
sensorAlarm.setThreshold(threshold); // 设置预警值
|
|
|
- sensorAlarm.getAlarmUsers().add(new SensorAlarmUser(null,"oltp26cDdkiAAsualbzKMyiZbJrU"));
|
|
|
- sensorAlarm.getAlarmUsers().add(new SensorAlarmUser(null,"oltp26fXeljOKUxYGhAx_dRqVAak"));
|
|
|
- // 打印日志(可选)
|
|
|
- log.warn("触发报警: 类型: {}, 设备: {}, 值: {} {}, 时间: {}", alarmType, deviceName, value, unit, time);
|
|
|
+ sensorAlarm.getAlarmUsers().add(new SensorAlarmUser(null, "oltp26cDdkiAAsualbzKMyiZbJrU"));
|
|
|
+ sensorAlarm.getAlarmUsers().add(new SensorAlarmUser(null, "oltp26fXeljOKUxYGhAx_dRqVAak"));
|
|
|
+ log.warn("触发报警: 类型: {},详细报警内容 : {}", alarmType, alarmMessage);
|
|
|
// 发布报警事件
|
|
|
applicationEventPublisher.publishEvent(new SensorAlarmEvent(this, sensorAlarm));
|
|
|
}
|
|
@@ -122,7 +121,7 @@ public class DefaultSensorAlarmChecker implements SensorAlarmChecker {
|
|
|
* @param time 时间戳
|
|
|
* @return 格式化后的报警消息
|
|
|
*/
|
|
|
- private String getAlarmMessage(String alarmType, Float value, String unit, String deviceName, String time) {
|
|
|
+ private String getAlarmMessage(String alarmType, Float value, String unit, String deviceName, String time, float threshold) {
|
|
|
String messageTemplate = "";
|
|
|
// 根据报警类型获取对应的消息模板
|
|
|
switch (alarmType) {
|
|
@@ -148,9 +147,9 @@ public class DefaultSensorAlarmChecker implements SensorAlarmChecker {
|
|
|
messageTemplate = "{alarmType}: 当前值:{value} {unit}";
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
// 替换模板中的占位符
|
|
|
- return messageTemplate.replace("{value}", String.format("%.2f", value)).replace("{unit}", unit).replace("{alarmType}", alarmType).replace("{time}", time).replace("{deviceName}", deviceName);
|
|
|
+ String replace = messageTemplate.replace("{value}", String.format("%.2f", value)).replace("{unit}", unit).replace("{alarmType}", alarmType).replace("{time}", time).replace("{deviceName}", deviceName).replace("{threshold}", String.format("%.2f", threshold));
|
|
|
+ return replace;
|
|
|
}
|
|
|
|
|
|
private String getUnit(String sensorType) {
|
|
@@ -161,4 +160,8 @@ public class DefaultSensorAlarmChecker implements SensorAlarmChecker {
|
|
|
default -> "";
|
|
|
};
|
|
|
}
|
|
|
+
|
|
|
+ private boolean isNull(Float value) {
|
|
|
+ return value != null && value != 0.0;
|
|
|
+ }
|
|
|
}
|