feat: 新功能开发,监测历史记录。微信和物联网平台,模块搭建。
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user