feat: 订阅上下线状态主题,处理设备上下线信息

master
wangrunpu 1 week ago
parent a0a867dbfa
commit dc69c03e7a

@ -47,7 +47,7 @@ public class HazardMqttConfig {
try {
// 订阅一个主题QoS=1
mqttGateway.subscribe("iot-hazard-server", 1);
mqttGateway.subscribe("status/online", 1);
log.info("危险源模块已订阅MQTT主题: iot-hazard-server");
} catch (Exception e) {
log.error("订阅MQTT主题失败", e);

@ -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));
}
}
}

Loading…
Cancel
Save