From 3280110a11e5ecbf2694f528a1e010c3a3900168 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Tue, 10 Feb 2026 12:42:31 +0800 Subject: [PATCH] xx --- .../ruoyi/device/domain/impl/djimqtt/README.md | 9 +++++++++ .../djimqtt/handler/DjiMqttMessageHandler.java | 18 +++++++++++------- .../device/domain/impl/tuohengmqtt/README.md | 5 ++--- .../service/TuohengMqttClientService.java | 6 +----- 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/ruoyi/device/domain/impl/djimqtt/README.md b/src/main/java/com/ruoyi/device/domain/impl/djimqtt/README.md index 1798220..4b81521 100644 --- a/src/main/java/com/ruoyi/device/domain/impl/djimqtt/README.md +++ b/src/main/java/com/ruoyi/device/domain/impl/djimqtt/README.md @@ -4,6 +4,15 @@ 本模块实现了大疆MQTT消息的接收和处理功能,支持动态创建多个MQTT客户端,每个客户端可以连接到不同的服务器。 +## 设备分类 + +| SN 前缀 | 设备类型 | +|---------|---------| +| `7C` 开头 | 大疆设备 | +| `158` 开头 | 大疆设备 | + +**注意:本模块只处理大疆设备(7C、158开头),会自动过滤拓恒设备(TH开头,包括THJS)。** + ## 核心特性 ✅ **多客户端支持** - 可以同时创建多个MQTT客户端 diff --git a/src/main/java/com/ruoyi/device/domain/impl/djimqtt/handler/DjiMqttMessageHandler.java b/src/main/java/com/ruoyi/device/domain/impl/djimqtt/handler/DjiMqttMessageHandler.java index 4c94788..36fbf2a 100644 --- a/src/main/java/com/ruoyi/device/domain/impl/djimqtt/handler/DjiMqttMessageHandler.java +++ b/src/main/java/com/ruoyi/device/domain/impl/djimqtt/handler/DjiMqttMessageHandler.java @@ -17,6 +17,9 @@ import java.util.regex.Pattern; /** * DJI MQTT消息处理器 + * 订阅 thing/product/+ 格式的topic + * 只处理大疆设备:7C、158 开头的SN + * 过滤拓恒设备:TH 开头的SN(包括THJS) * * @author ruoyi */ @@ -37,21 +40,22 @@ public class DjiMqttMessageHandler { private final List dockDataCallbacks = new ArrayList<>(); /** - * 无人机SN正则表达式(只匹配大疆THJS开头的SN) - * 示例:THJSY03A2308YCMFPB11-AIRCRAFT + * 无人机SN正则表达式(只匹配大疆7C、158开头的SN) + * 示例:7CXXXXXXXXXX, 158XXXXXXXXXX */ - private static final Pattern DRONE_SN_PATTERN = Pattern.compile("^THJS[0-9A-Z]+"); + private static final Pattern DRONE_SN_PATTERN = Pattern.compile("^(7C|158)[0-9A-Z]+"); /** - * 机场SN正则表达式(只匹配大疆THJS开头的SN) - * 示例:THJSY03A2308YCMFPB11 + * 机场SN正则表达式(只匹配大疆7C、158开头的SN) + * 示例:7CXXXXXXXXXX, 158XXXXXXXXXX */ - private static final Pattern DOCK_SN_PATTERN = Pattern.compile("^THJS[0-9A-Z]+"); + private static final Pattern DOCK_SN_PATTERN = Pattern.compile("^(7C|158)[0-9A-Z]+"); /** * 拓恒设备SN前缀(需要过滤) + * TH开头的设备是拓恒设备,需要跳过 */ - private static final Pattern TUOHENG_SN_PATTERN = Pattern.compile("^(7C|158)[0-9A-Z]+$"); + private static final Pattern TUOHENG_SN_PATTERN = Pattern.compile("^TH[0-9A-Z]+"); /** * 注册无人机数据回调 diff --git a/src/main/java/com/ruoyi/device/domain/impl/tuohengmqtt/README.md b/src/main/java/com/ruoyi/device/domain/impl/tuohengmqtt/README.md index a033542..0771639 100644 --- a/src/main/java/com/ruoyi/device/domain/impl/tuohengmqtt/README.md +++ b/src/main/java/com/ruoyi/device/domain/impl/tuohengmqtt/README.md @@ -8,8 +8,7 @@ | SN 前缀 | 设备类型 | Topic 格式 | |---------|---------|-----------| -| `TH` 开头 | 拓恒设备 | `thing/product/{SN}/...` | -| `THJS` 开头 | 大疆设备 | `thing/product/{SN}/...` | +| `TH` 开头(含THJS) | 拓恒设备 | `thing/product/{SN}/...` | | `7C` 开头 | 大疆设备 | `thing/product/{SN}/...` | | `158` 开头 | 大疆设备 | `thing/product/{SN}/...` | @@ -236,7 +235,7 @@ public class TuohengService { | Topic 类型 | 过滤规则 | |-----------|---------| -| `thing/product/{SN}` | 只处理 `TH` 开头的SN,跳过 `7C`/`158`/`THJS` 开头的大疆设备 | +| `thing/product/{SN}` | 只处理 `TH` 开头的SN(包括THJS),跳过 `7C`/`158` 开头的大疆设备 | | `/topic/v1/...` | 全部是拓恒设备,直接处理 | ### 4. 消息路由 diff --git a/src/main/java/com/ruoyi/device/domain/impl/tuohengmqtt/service/TuohengMqttClientService.java b/src/main/java/com/ruoyi/device/domain/impl/tuohengmqtt/service/TuohengMqttClientService.java index 5491b1f..a36971a 100644 --- a/src/main/java/com/ruoyi/device/domain/impl/tuohengmqtt/service/TuohengMqttClientService.java +++ b/src/main/java/com/ruoyi/device/domain/impl/tuohengmqtt/service/TuohengMqttClientService.java @@ -25,8 +25,6 @@ public class TuohengMqttClientService { private static final String AIRPORT_DRONE_REALTIME_TOPIC = "/topic/v1/airportDrone/+/realTime/data"; private static final String PRODUCT_OSD_TOPIC = "thing/product/+/osd"; private static final String PRODUCT_EVENTS_TOPIC = "thing/product/+/events"; - private static final String PRODUCT_SERVICES_TOPIC = "thing/product/+/services"; - private static final String PRODUCT_SERVICES_REPLY_TOPIC = "thing/product/+/services_reply"; public TuohengMqttClientService(TuohengMqttClientConfig config, TuohengMqttMessageHandler messageHandler) { this.config = config; @@ -124,9 +122,7 @@ public class TuohengMqttClientService { AIRPORT_NEST_BASIC_TOPIC, AIRPORT_DRONE_REALTIME_TOPIC, PRODUCT_OSD_TOPIC, - PRODUCT_EVENTS_TOPIC, - PRODUCT_SERVICES_TOPIC, - PRODUCT_SERVICES_REPLY_TOPIC + PRODUCT_EVENTS_TOPIC }; for (String topic : topics) {