This commit is contained in:
孙小云 2026-02-10 12:42:31 +08:00
parent f0ebbf5732
commit 3280110a11
4 changed files with 23 additions and 15 deletions

View File

@ -4,6 +4,15 @@
本模块实现了大疆MQTT消息的接收和处理功能支持动态创建多个MQTT客户端每个客户端可以连接到不同的服务器。
## 设备分类
| SN 前缀 | 设备类型 |
|---------|---------|
| `7C` 开头 | 大疆设备 |
| `158` 开头 | 大疆设备 |
**注意本模块只处理大疆设备7C、158开头会自动过滤拓恒设备TH开头包括THJS。**
## 核心特性
**多客户端支持** - 可以同时创建多个MQTT客户端

View File

@ -17,6 +17,9 @@ import java.util.regex.Pattern;
/**
* DJI MQTT消息处理器
* 订阅 thing/product/+ 格式的topic
* 只处理大疆设备7C158 开头的SN
* 过滤拓恒设备TH 开头的SN包括THJS
*
* @author ruoyi
*/
@ -37,21 +40,22 @@ public class DjiMqttMessageHandler {
private final List<IDockDataCallback> dockDataCallbacks = new ArrayList<>();
/**
* 无人机SN正则表达式只匹配大疆THJS开头的SN
* 示例THJSY03A2308YCMFPB11-AIRCRAFT
* 无人机SN正则表达式只匹配大疆7C158开头的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正则表达式只匹配大疆7C158开头的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]+");
/**
* 注册无人机数据回调

View File

@ -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. 消息路由

View File

@ -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) {