|
|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
package org.dromara.hazard.handler;
|
|
|
|
|
|
|
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
|
|
import org.dromara.common.mqtt.handler.MqttMessageHandler;
|
|
|
|
|
import org.dromara.common.mqtt.server.MqttGateway;
|
|
|
|
|
import org.eclipse.paho.client.mqttv3.MqttMessage;
|
|
|
|
|
@ -8,6 +9,8 @@ import org.slf4j.LoggerFactory;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 危险源模块的MQTT消息处理器
|
|
|
|
|
*
|
|
|
|
|
@ -32,6 +35,8 @@ public class HazardMqttMessageHandler implements MqttMessageHandler {
|
|
|
|
|
// TODO: 根据不同的主题分发到不同的业务处理方法
|
|
|
|
|
if (topic.equals("iot-hazard-server")) {
|
|
|
|
|
handleHazardMessage(topic, payload);
|
|
|
|
|
} else if (topic.equals("status/online")){
|
|
|
|
|
handleOnlineMessage(topic, payload);
|
|
|
|
|
} else {
|
|
|
|
|
log.warn("未知的消息主题: {}", topic);
|
|
|
|
|
}
|
|
|
|
|
@ -71,4 +76,21 @@ public class HazardMqttMessageHandler implements MqttMessageHandler {
|
|
|
|
|
// TODO: 实现你的业务逻辑
|
|
|
|
|
// 例如: 解析JSON、保存数据库、触发业务流程等
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理设备上下线通知
|
|
|
|
|
* @param topic
|
|
|
|
|
* @param payload
|
|
|
|
|
*/
|
|
|
|
|
private void handleOnlineMessage(String topic, String payload) {
|
|
|
|
|
log.info("处理设备上下线通知 - Topic: {}, Payload: {}", topic, payload);
|
|
|
|
|
List<String> strings = StringUtils.str2List(payload, ":", false, true);
|
|
|
|
|
if (strings.size() != 2) return;
|
|
|
|
|
String sign = strings.get(0);
|
|
|
|
|
if ("OFFLINE".equals(sign)) {
|
|
|
|
|
log.info("设备 {} 下线。", strings.get(1));
|
|
|
|
|
}else if ("ONLINE".equals(sign)) {
|
|
|
|
|
log.info("设备 {} 上线。", strings.get(1));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|