From 253075af43d4dfc97c06b7758b4f31d90cae1155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Fri, 27 Mar 2026 09:57:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constants/TuohengDeviceTelemetry.java | 107 +++++++++++++++++- .../device/service/dto/DockDetailDTO.java | 24 ++++ .../service/impl/TuohengBufferDeviceImpl.java | 49 ++++++++ 3 files changed, 179 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/ruoyi/device/domain/model/thingsboard/tuoheng/constants/TuohengDeviceTelemetry.java b/src/main/java/com/ruoyi/device/domain/model/thingsboard/tuoheng/constants/TuohengDeviceTelemetry.java index 99c6ffc..f08f517 100644 --- a/src/main/java/com/ruoyi/device/domain/model/thingsboard/tuoheng/constants/TuohengDeviceTelemetry.java +++ b/src/main/java/com/ruoyi/device/domain/model/thingsboard/tuoheng/constants/TuohengDeviceTelemetry.java @@ -272,6 +272,103 @@ public class TuohengDeviceTelemetry { } ); +// public static final TelemetryKey vertical_speed = TelemetryKey.of( +// "vertical_speed", +// Double.class, +// value -> { +// if (value == null) return null; +// if (value instanceof Number) { +// return ((Number) value).doubleValue(); +// } +// return Double.parseDouble(value.toString()); +// } +// ); +// +// public static final TelemetryKey horizontal_speed = TelemetryKey.of( +// "horizontal_speed", +// Double.class, +// value -> { +// if (value == null) return null; +// if (value instanceof Number) { +// return ((Number) value).doubleValue(); +// } +// return Double.parseDouble(value.toString()); +// } +// ); + + public static final TelemetryKey distance_to_home = TelemetryKey.of( + "distance_to_home", + Double.class, + value -> { + if (value == null) return null; + if (value instanceof Number) { + return ((Number) value).doubleValue(); + } + return Double.parseDouble(value.toString()); + } + ); + + + public static final TelemetryKey altitude = TelemetryKey.of( + "altitude", + Double.class, + value -> { + if (value == null) return null; + if (value instanceof Number) { + return ((Number) value).doubleValue(); + } + return Double.parseDouble(value.toString()); + } + ); + +// public static final TelemetryKey pitch = TelemetryKey.of( +// "pitch", +// Double.class, +// value -> { +// if (value == null) return null; +// if (value instanceof Number) { +// return ((Number) value).doubleValue(); +// } +// return Double.parseDouble(value.toString()); +// } +// ); +// +// public static final TelemetryKey yaw = TelemetryKey.of( +// "yaw", +// Double.class, +// value -> { +// if (value == null) return null; +// if (value instanceof Number) { +// return ((Number) value).doubleValue(); +// } +// return Double.parseDouble(value.toString()); +// } +// ); + + public static final TelemetryKey camerapitch = TelemetryKey.of( + "camerapitch", + Double.class, + value -> { + if (value == null) return null; + if (value instanceof Number) { + return ((Number) value).doubleValue(); + } + return Double.parseDouble(value.toString()); + } + ); + + public static final TelemetryKey camerayaw = TelemetryKey.of( + "camerayaw", + Double.class, + value -> { + if (value == null) return null; + if (value instanceof Number) { + return ((Number) value).doubleValue(); + } + return Double.parseDouble(value.toString()); + } + ); + /** * 充电器数据 (来自 /topic/v1/airportNest/+/realTime/data) */ @@ -740,7 +837,15 @@ public class TuohengDeviceTelemetry { HOLDER_Y_STATUS, CONTROLLER_STATUS, HATCH_STATUS, - DRONE_STATUS + DRONE_STATUS, +// vertical_speed, +// horizontal_speed, + distance_to_home, +// altitude, +// pitch, +// yaw, + camerapitch, + camerayaw ); } diff --git a/src/main/java/com/ruoyi/device/service/dto/DockDetailDTO.java b/src/main/java/com/ruoyi/device/service/dto/DockDetailDTO.java index 657e94a..d6dfe0b 100644 --- a/src/main/java/com/ruoyi/device/service/dto/DockDetailDTO.java +++ b/src/main/java/com/ruoyi/device/service/dto/DockDetailDTO.java @@ -170,5 +170,29 @@ public class DockDetailDTO implements Serializable /** 直播视频地址 */ private String liveVideoUrl; + //爬升速度 + private Double vertical_speed; + + //平飞速度 + private Double horizontal_speed; + + //距离机场 + private Double distance_to_home; + + //海拔高度 + private Double altitude; + + //无人机俯仰角 + private Double pitch; + + //无人机偏航角 + private Double yaw; + + //云台俯仰角 + private Double camerapitch; + + //云台偏航角 + private Double camerayaw; + } 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 78d9266..0c176f4 100644 --- a/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java +++ b/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java @@ -388,6 +388,55 @@ public class TuohengBufferDeviceImpl implements IBufferDeviceService { dto.setCabinHumidity(value.getValue()); }); + telemetry.get(TuohengDeviceTelemetry.VERTICAL_SPEED) + .ifPresent(value -> { + log.info("vertical_speed: {}", value.getValue()); + dto.setVertical_speed(value.getValue()); + }); + + telemetry.get(TuohengDeviceTelemetry.HORIZONTAL_SPEED) + .ifPresent(value -> { + log.info("horizontal_speed: {}", value.getValue()); + dto.setHorizontal_speed(value.getValue()); + }); + + telemetry.get(TuohengDeviceTelemetry.PITCH) + .ifPresent(value -> { + log.info("pitch: {}", value.getValue()); + dto.setPitch(value.getValue()); + }); + + + telemetry.get(TuohengDeviceTelemetry.YAW) + .ifPresent(value -> { + log.info("yaw: {}", value.getValue()); + dto.setYaw(value.getValue()); + }); + + telemetry.get(TuohengDeviceTelemetry.camerapitch) + .ifPresent(value -> { + log.info("camerapitch: {}", value.getValue()); + dto.setCamerapitch(value.getValue()); + }); + + telemetry.get(TuohengDeviceTelemetry.camerayaw) + .ifPresent(value -> { + log.info("camerayaw: {}", value.getValue()); + dto.setCamerayaw(value.getValue()); + }); + + telemetry.get(TuohengDeviceTelemetry.distance_to_home) + .ifPresent(value -> { + log.info("distance_to_home: {}", value.getValue()); + dto.setDistance_to_home(value.getValue()); + }); + + telemetry.get(TuohengDeviceTelemetry.ALTITUDE) + .ifPresent(value -> { + log.info("camerayaw: {}", value.getValue()); + dto.setAltitude(value.getValue()); + }); + /** * 通过 MachineStateManager 获取舱门状态 */