Browse Source

1、增加温湿度采集解析

dev
3067418132@qq.com 1 week ago
parent
commit
9854414719
  1. 8
      mh-admin/src/test/java/com/mh/MHApplicationTest.java
  2. 48
      mh-common/src/main/java/com/mh/common/utils/AnalysisReceiveOrder485.java
  3. 14
      mh-framework/src/main/java/com/mh/framework/netty/EchoServerHandler.java

8
mh-admin/src/test/java/com/mh/MHApplicationTest.java

@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.web.client.RestTemplate;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@ -71,6 +72,13 @@ public class MHApplicationTest {
@Autowired
private ISysParamsService sysParamsService;
@Test
public void test1() {
BigDecimal bigDecimal = new BigDecimal(165);
bigDecimal = bigDecimal.multiply(new BigDecimal(550)).divide(new BigDecimal(1650)).subtract(new BigDecimal(40));
System.out.println(bigDecimal);
}
@Test
public void getWeatherInfo() {
getWeatherDataTask.getWeatherInfo();

48
mh-common/src/main/java/com/mh/common/utils/AnalysisReceiveOrder485.java

@ -343,4 +343,52 @@ public class AnalysisReceiveOrder485 {
}
return "";
}
public String analysisTempHumiditySensorOrder485(String receiveStr, CollectionParamsManage deviceCodeParam) {
// 去掉空格
String dataStr = receiveStr.replace(" ", "").toUpperCase();
// 检验报文
String checkStr = dataStr.substring(0, dataStr.length() - 4);
byte[] strOrder = ExchangeStringUtil.hexStrToBinaryStr(checkStr);
int checkNum = CRC16.CRC16_MODBUS(strOrder);
String checkWord = ExchangeStringUtil.decToHex(String.valueOf(checkNum));
checkWord = checkWord.substring(2, 4) + checkWord.substring(0, 2);
if (checkWord.equalsIgnoreCase(dataStr.substring(dataStr.length() - 4))) {
// 表号
String cloudId = ExchangeStringUtil.hexToDec(dataStr.substring(0, 2));
// 读数
String data = "";
data = dataStr.substring(dataStr.length() - 8, dataStr.length() - 4);
int dataType = deviceCodeParam.getDataType();
try {
if (dataType == 2) {
data = ExchangeStringUtil.hexToDec(data);
BigDecimal bigDecimal = new BigDecimal(data);
if (deviceCodeParam.getParamType().equals("12")){
// 温度
bigDecimal = bigDecimal.multiply(new BigDecimal(550)).divide(new BigDecimal(1650)).subtract(new BigDecimal(40));
} else if (deviceCodeParam.getParamType().equals("35")) {
// 湿度
bigDecimal = bigDecimal.multiply(new BigDecimal(100));
}
bigDecimal = bigDecimal.divide(new BigDecimal((int) Math.pow(10, deviceCodeParam.getDigits()))).setScale(3, RoundingMode.HALF_UP); // 除以1000并保留整数
data = bigDecimal.toString();
// log.info("液位==>{},寄存器地址==>{},实时读数==>{}", cloudId, deviceCodeParam.getRegisterAddr(), data);
}
// // 判断data大于99999999,就返回空
// if (new BigDecimal(data).intValue() > 130) {
// return "";
// }
return data;
} catch (Exception e) {
log.error("保存液位数据失败!", e);
}
} else {
// log.info("液位===>{}", dataStr);
return "";
}
return "";
}
}

14
mh-framework/src/main/java/com/mh/framework/netty/EchoServerHandler.java

@ -356,9 +356,15 @@ public class EchoServerHandler extends ChannelInboundHandlerAdapter {
case "2" ->
// 热泵启停控制
analysisData = analysisReceiveOrder485.analysisHeatPumpOrder485(receiveStr, deviceCodeParamEntity);
case "12" ->
case "12" -> {
if (deviceCodeParamEntity.getMtType().equals("8")) {
// 温湿度传感器
analysisData = analysisReceiveOrder485.analysisTempHumiditySensorOrder485(receiveStr, deviceCodeParamEntity);
} else {
// 热泵实际温度
analysisData = analysisReceiveOrder485.analysisHeatPumpOrder485(receiveStr, deviceCodeParamEntity);
}
}
case "14" ->
// 热泵读取温度设置
analysisData = analysisReceiveOrder485.analysisHeatPumpOrder485(receiveStr, deviceCodeParamEntity);
@ -368,6 +374,12 @@ public class EchoServerHandler extends ChannelInboundHandlerAdapter {
case "11" ->
// 液位计
analysisData = analysisReceiveOrder485.analysisLiquidOrder485(receiveStr, deviceCodeParamEntity);
case "13" ->
// 压力
analysisData = analysisReceiveOrder485.analysisTempHumiditySensorOrder485(receiveStr, deviceCodeParamEntity);
case "35" ->
// 湿度
analysisData = analysisReceiveOrder485.analysisTempHumiditySensorOrder485(receiveStr, deviceCodeParamEntity);
default -> {
// log.info("设备类型错误");
return;

Loading…
Cancel
Save