修改电池逻辑
This commit is contained in:
parent
2dca7d780c
commit
9fba4a59e6
|
|
@ -397,13 +397,37 @@ public class TuohengBufferDeviceImpl implements IBufferDeviceService {
|
|||
dto.setRainfall(value.getValue());
|
||||
});
|
||||
|
||||
// 设置电池信息
|
||||
// 设置电池信息(从无人机设备获取)
|
||||
log.info("---------- 解析电池数据 ----------");
|
||||
telemetry.get(TuohengDeviceTelemetry.BATTERY_LEVEL)
|
||||
if (aircraftIotDeviceId != null) {
|
||||
try {
|
||||
// 获取无人机遥测数据
|
||||
TelemetryMap aircraftTelemetry = thingsBoardDomain.getPredefinedTuohengDeviceTelemetry(aircraftIotDeviceId);
|
||||
|
||||
// 从无人机获取电池电量(使用 battery_remain)
|
||||
aircraftTelemetry.get(TuohengDeviceTelemetry.BATTERY_REMAIN)
|
||||
.ifPresent(value -> {
|
||||
log.info("BATTERY_LEVEL 电池电量: {}", value.getValue());
|
||||
log.info("BATTERY_REMAIN 无人机电池电量: {}", value.getValue());
|
||||
dto.setCapacity_percent(value.getValue());
|
||||
});
|
||||
} catch (Exception e) {
|
||||
log.warn("从无人机获取电池电量失败,尝试从机场获取: {}", e.getMessage());
|
||||
// 如果无人机数据获取失败,降级使用机场的 BATTERY_LEVEL
|
||||
telemetry.get(TuohengDeviceTelemetry.BATTERY_LEVEL)
|
||||
.ifPresent(value -> {
|
||||
log.info("BATTERY_LEVEL 机场电池电量(降级): {}", value.getValue());
|
||||
dto.setCapacity_percent(value.getValue());
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// 如果没有绑定无人机,使用机场的 BATTERY_LEVEL
|
||||
log.info("机场未绑定无人机,使用机场电池电量");
|
||||
telemetry.get(TuohengDeviceTelemetry.BATTERY_LEVEL)
|
||||
.ifPresent(value -> {
|
||||
log.info("BATTERY_LEVEL 机场电池电量: {}", value.getValue());
|
||||
dto.setCapacity_percent(value.getValue());
|
||||
});
|
||||
}
|
||||
|
||||
// 设置充电状态
|
||||
telemetry.get(TuohengDeviceTelemetry.BATTERY_B_CHARGING)
|
||||
|
|
@ -604,20 +628,23 @@ public class TuohengBufferDeviceImpl implements IBufferDeviceService {
|
|||
});
|
||||
|
||||
// 优先使用 battery_totalVoltage(BMS电池电压),如果没有则使用 voltage(无人机电压)
|
||||
// 注意:电压需要乘以1000转换为毫伏(mV)
|
||||
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());
|
||||
log.info("BATTERY_TOTAL_VOLTAGE 总电压: {} V", voltageValue);
|
||||
dto.setVoltage((int) (voltageValue * 1000)); // 转换为毫伏
|
||||
log.info("设置电压: {} mV", dto.getVoltage());
|
||||
} else {
|
||||
telemetry.get(TuohengDeviceTelemetry.VOLTAGE)
|
||||
.ifPresent(value -> {
|
||||
log.info("VOLTAGE 电压(备用): {}", value.getValue());
|
||||
log.info("VOLTAGE 电压(备用): {} V", value.getValue());
|
||||
Double voltage = value.getValue();
|
||||
if (voltage != null) {
|
||||
dto.setVoltage(voltage.intValue());
|
||||
dto.setVoltage((int) (voltage * 1000)); // 转换为毫伏
|
||||
log.info("设置电压: {} mV", dto.getVoltage());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue