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