设置机场离线逻辑
This commit is contained in:
parent
b76d0ef0b4
commit
582a3d0e0c
|
|
@ -206,21 +206,30 @@ public class TuohengBufferDeviceImpl implements IBufferDeviceService {
|
|||
TelemetryMap telemetry = thingsBoardDomain.getPredefinedTuohengDeviceTelemetry(iotDeviceId);
|
||||
log.info("拓恒设备遥测数据: {}", telemetry);
|
||||
|
||||
// 设置在线状态
|
||||
Boolean isActive = attributes.get(TuohengDeviceAttributes.ACTIVE).orElse(false);
|
||||
log.info("设备在线状态 ACTIVE: {}", isActive);
|
||||
if (isActive) {
|
||||
telemetry.get(TuohengDeviceTelemetry.STATUS).ifPresent(statusValue -> {
|
||||
// 设置在线状态 - 基于心跳时间戳判断
|
||||
telemetry.get(TuohengDeviceTelemetry.STATUS).ifPresentOrElse(statusValue -> {
|
||||
long lastHeartbeatTime = statusValue.getTimestamp();
|
||||
long currentTime = System.currentTimeMillis();
|
||||
long timeDiff = currentTime - lastHeartbeatTime;
|
||||
|
||||
log.info("STATUS 心跳时间戳: {}, 当前时间: {}, 时间差: {}ms ({}秒)",
|
||||
lastHeartbeatTime, currentTime, timeDiff, timeDiff / 1000);
|
||||
|
||||
// 5分钟 = 300000 毫秒
|
||||
if (timeDiff > 300000) {
|
||||
dto.setDockStatus("OFFLINE");
|
||||
log.info("心跳超时(>5分钟),设置机场状态为 OFFLINE");
|
||||
} else {
|
||||
String status = statusValue.getValue();
|
||||
log.info("STATUS 遥测值: {}", status);
|
||||
String dockStatus = "online".equals(status) ? "IDLE" : "OFFLINE";
|
||||
dto.setDockStatus(dockStatus);
|
||||
log.info("设置机场状态: {}", dockStatus);
|
||||
});
|
||||
} else {
|
||||
log.info("心跳正常,设置机场状态: {}", dockStatus);
|
||||
}
|
||||
}, () -> {
|
||||
dto.setDockStatus("OFFLINE");
|
||||
log.info("设备离线,设置机场状态为 OFFLINE");
|
||||
}
|
||||
log.info("没有心跳数据,设置机场状态为 OFFLINE");
|
||||
});
|
||||
|
||||
// 设置舱内温度和湿度
|
||||
log.info("---------- 解析舱内环境数据 ----------");
|
||||
|
|
|
|||
Loading…
Reference in New Issue