a-tuoheng-device/src/main/java/com/ruoyi/device/service/impl/DjiService.java

71 lines
2.6 KiB
Java
Raw Normal View History

2026-01-28 14:13:45 +08:00
package com.ruoyi.device.service.impl;
import com.ruoyi.device.domain.impl.djimqtt.callback.IDockDataCallback;
import com.ruoyi.device.domain.impl.djimqtt.callback.IDroneDataCallback;
import com.ruoyi.device.domain.impl.djimqtt.config.DjiMqttClientConfig;
import com.ruoyi.device.service.config.DjiMqttProperties;
import com.ruoyi.device.domain.impl.djimqtt.handler.DjiMqttMessageHandler;
import com.ruoyi.device.domain.impl.djimqtt.manager.DjiMqttClientManager;
import com.ruoyi.device.domain.impl.djimqtt.model.DockData;
import com.ruoyi.device.domain.impl.djimqtt.model.DroneData;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class DjiService {
@Autowired
private DjiMqttClientManager clientManager;
@Autowired
private DjiMqttProperties mqttProperties;
@EventListener(ApplicationReadyEvent.class)
public void onApplicationReady() {
// 从配置文件读取配置
DjiMqttClientConfig config = DjiMqttClientConfig.builder()
.host(mqttProperties.getHost())
.port(mqttProperties.getPort())
.clientId(mqttProperties.getClientId())
.username(mqttProperties.getUsername())
.password(mqttProperties.getPassword())
.connectionTimeout(mqttProperties.getConnectionTimeout())
.keepAliveInterval(mqttProperties.getKeepAliveInterval())
.autoReconnect(mqttProperties.getAutoReconnect())
.cleanSession(mqttProperties.getCleanSession())
.useSharedSubscription(true)
.sharedGroupName("dji-group")
.build();
// 创建客户端
String clientId = clientManager.createClient(config);
// 获取消息处理器
DjiMqttMessageHandler handler = clientManager.getHandler(clientId);
// 注册无人机数据回调
handler.registerDroneDataCallback(new IDroneDataCallback() {
@Override
public void onDroneData(DroneData droneData) {
log.info("droneData:{}", droneData);
}
});
// 注册机场数据回调
handler.registerDockDataCallback(new IDockDataCallback() {
@Override
public void onDockData(DockData dockData) {
log.info("droneData:{}", dockData);
}
});
log.info("客户端已创建并注册回调");
}
}