From 2dca7d780ca3dbb9985412771779060e66c8ae4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Fri, 6 Feb 2026 15:41:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=B5=E6=B1=A0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TuohengBufferDeviceImpl.java | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) 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()); }); // 设置飞行时长(秒)