feat: 新功能开发,监测历史记录。微信和物联网平台,模块搭建。

This commit is contained in:
tianyongbao
2025-11-05 00:35:23 +08:00
parent 4d10d291a3
commit 8fd28e727e
38 changed files with 2099 additions and 49 deletions

View File

@@ -0,0 +1,134 @@
package com.intc.iot.handler;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* 设备数据处理器
*
* @author intc
*/
@Slf4j
@Component
public class DeviceDataHandler {
/**
* 处理设备属性上报数据
*
* @param topic 主题
* @param payload 消息内容
*/
public void handlePropertyPost(String topic, String payload) {
log.info("收到设备属性上报Topic: {}", topic);
try {
JSONObject data = JSONUtil.parseObj(payload);
// 解析飞燕平台消息格式
String method = data.getStr("method");
String id = data.getStr("id");
JSONObject params = data.getJSONObject("params");
log.info("设备属性数据 - Method: {}, ID: {}, Params: {}", method, id, params);
// TODO: 这里添加您的业务逻辑
// 1. 存储到数据库
// 2. 触发告警
// 3. 推送到前端(通过 WebSocket/SSE
// 4. 数据分析处理
if (params != null) {
params.forEach((key, value) -> {
log.info("属性: {} = {}", key, value);
// 根据不同属性进行不同处理
handleProperty(key, value);
});
}
} catch (Exception e) {
log.error("处理设备属性数据失败", e);
}
}
/**
* 处理设备事件上报数据
*
* @param topic 主题
* @param payload 消息内容
*/
public void handleEventPost(String topic, String payload) {
log.info("收到设备事件上报Topic: {}", topic);
try {
JSONObject data = JSONUtil.parseObj(payload);
String method = data.getStr("method");
String id = data.getStr("id");
JSONObject params = data.getJSONObject("params");
log.info("设备事件数据 - Method: {}, ID: {}, Params: {}", method, id, params);
// TODO: 处理设备事件
// 例如:故障告警、状态变化等
} catch (Exception e) {
log.error("处理设备事件数据失败", e);
}
}
/**
* 处理单个属性
*
* @param propertyName 属性名称
* @param propertyValue 属性值
*/
private void handleProperty(String propertyName, Object propertyValue) {
// 根据属性名称进行不同的业务处理
switch (propertyName) {
case "temperature":
handleTemperature(propertyValue);
break;
case "humidity":
handleHumidity(propertyValue);
break;
case "status":
handleStatus(propertyValue);
break;
default:
log.debug("未处理的属性: {} = {}", propertyName, propertyValue);
}
}
/**
* 处理温度数据
*/
private void handleTemperature(Object value) {
// 示例:温度告警
if (value instanceof Number) {
double temp = ((Number) value).doubleValue();
if (temp > 80) {
log.warn("温度过高告警: {}°C", temp);
// TODO: 发送告警通知
}
}
}
/**
* 处理湿度数据
*/
private void handleHumidity(Object value) {
// 示例:湿度处理逻辑
log.debug("湿度数据: {}", value);
}
/**
* 处理状态数据
*/
private void handleStatus(Object value) {
// 示例:设备状态变化
log.info("设备状态变化: {}", value);
}
}