diff --git a/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java b/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java index 0e6724f..f2ceb4d 100644 --- a/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java +++ b/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java @@ -603,14 +603,35 @@ public class TuohengBufferDeviceImpl implements IBufferDeviceService { dto.setBatteryLevel(value.getValue()); }); - telemetry.get(TuohengDeviceTelemetry.VOLTAGE) + // 优先使用 battery_totalVoltage(BMS电池电压),如果没有则使用 voltage(无人机电压) + Double voltageValue = telemetry.get(TuohengDeviceTelemetry.BATTERY_TOTAL_VOLTAGE) + .map(TelemetryValue::getValue) + .orElse(null); + + if (voltageValue != null) { + log.info("BATTERY_TOTAL_VOLTAGE 总电压: {}", voltageValue); + dto.setVoltage(voltageValue.intValue()); + } else { + telemetry.get(TuohengDeviceTelemetry.VOLTAGE) + .ifPresent(value -> { + log.info("VOLTAGE 电压(备用): {}", value.getValue()); + Double voltage = value.getValue(); + if (voltage != null) { + dto.setVoltage(voltage.intValue()); + } + }); + } + + telemetry.get(TuohengDeviceTelemetry.BATTERY_CELL_TEMP) .ifPresent(value -> { - log.info("VOLTAGE 电压原始值: {}", value.getValue()); - Double voltage = value.getValue(); - if (voltage != null) { - dto.setVoltage(voltage.intValue()); - log.info("VOLTAGE 电压转换后: {}", voltage.intValue()); - } + log.info("BATTERY_CELL_TEMP 电池温度: {}", value.getValue()); + dto.setBatteryTemperature(value.getValue()); + }); + + telemetry.get(TuohengDeviceTelemetry.BATTERY_NUM_CYCLES) + .ifPresent(value -> { + log.info("BATTERY_NUM_CYCLES 循环次数: {}", value.getValue()); + dto.setCycleCount(value.getValue()); }); // 设置飞行时长(秒)