From d5dab0a85de9573ff61e20794af04129dd4b2f87 Mon Sep 17 00:00:00 2001
From: zhanzhiqin <895896009@qq.com>
Date: 星期一, 01 八月 2022 18:30:24 +0800
Subject: [PATCH] 大气设备
---
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereNewReqInnerFrame.java | 4
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3OperationReportInnerFrame.java | 93 ------
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereQuerySensorInfoReqInnerFrame.java | 22 -
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereQueryVersionReqInnerFrame.java | 22 -
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereQueryHeartBeatTimeReqInnerFrame.java | 22 -
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirEquipmentController.java | 57 ++++
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereSetHeartBeatTimeReqInnerFrame.java | 41 ++
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataController.java | 10
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereHeartbeatReportInnerFrame.java | 19
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereQuerySensorInfoReportInnerFrame.java | 140 ++++++++++
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereHeartBeatReqInnerFrame.java | 6
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataNongGengController.java | 6
ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java | 1
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereHeartBeatTimeReportInnerFrame.java | 48 +++
ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java | 156 +++++++++++
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereQueryVersionReportInnerFrame.java | 43 +++
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereOperationReportInnerFrame.java | 68 ++++
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereRebootReqInnerFrame.java | 22 -
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java | 49 +++
19 files changed, 654 insertions(+), 175 deletions(-)
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataController.java
index 183fba6..6ebbf44 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataController.java
@@ -3,26 +3,20 @@
import com.sandu.common.domain.CommonPage;
import com.sandu.common.domain.ResponseVO;
import com.sandu.common.object.BaseConditionVO;
-import com.sandu.common.security.annotation.AnonymousAccess;
import com.sandu.common.util.ResponseUtil;
-import com.sandu.common.util.SpringContextHolder;
import com.sandu.ximon.admin.manager.iot.amqp.processor.AirDataProcessor;
import com.sandu.ximon.admin.manager.iot.frame.A5Frame;
-import com.sandu.ximon.admin.manager.iot.frame.inner.request.AirDataReqInnerFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.request.AtmosphereHeartBeatReqInnerFrame;
import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame;
import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5OrderEnum;
import com.sandu.ximon.admin.manager.iot.rrpc.enums.AtmoFunctionCode;
import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService;
import com.sandu.ximon.admin.security.PermissionConfig;
import com.sandu.ximon.admin.service.AirDataService;
-import com.sandu.ximon.admin.service.PoleBindingService;
import com.sandu.ximon.admin.utils.RedisUtils;
import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils;
import com.sandu.ximon.dao.bo.AirDataBo;
-import com.sandu.ximon.dao.domain.Pole;
import com.sandu.ximon.dao.enums.MenuEnum;
-import com.sandu.ximon.dao.enums.PoleBindingEnums;
-import com.sandu.ximon.dao.mapper.PoleBindingMapper;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
@@ -77,7 +71,7 @@
if (!permissionConfig.check(MenuEnum.AIR_DATA_UPDATE.getCode())) {
return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
}
- AirDataReqInnerFrame airDataReqInnerFrame = new AirDataReqInnerFrame();
+ AtmosphereHeartBeatReqInnerFrame airDataReqInnerFrame = new AtmosphereHeartBeatReqInnerFrame();
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode(), airDataReqInnerFrame);
System.out.println(a5Frame + " --------a5Frame");
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataNongGengController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataNongGengController.java
index c1a70df..2e51904 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataNongGengController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataNongGengController.java
@@ -10,7 +10,7 @@
import com.sandu.common.util.ResponseUtil;
import com.sandu.ximon.admin.manager.iot.amqp.processor.AirDataProcessor;
import com.sandu.ximon.admin.manager.iot.frame.A5Frame;
-import com.sandu.ximon.admin.manager.iot.frame.inner.request.AirDataNewReqInnerFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.request.AtmosphereNewReqInnerFrame;
import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame;
import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5OrderEnum;
import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService;
@@ -39,8 +39,8 @@
@PostMapping("/updateAirEquipmentInfo")
public ResponseVO<Object> updataAirEquipmentInfo(@RequestBody List<String> listMac) {
- AirDataNewReqInnerFrame airDataNewReqInnerFrame = new AirDataNewReqInnerFrame();
- A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode(), airDataNewReqInnerFrame);
+ AtmosphereNewReqInnerFrame atmosphereNewReqInnerFrame = new AtmosphereNewReqInnerFrame();
+ A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode(), atmosphereNewReqInnerFrame);
System.out.println(a5Frame + " --------a5Frame");
List<String> success = new ArrayList<>();
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirEquipmentController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirEquipmentController.java
index 5c04267..9804b3b 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirEquipmentController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirEquipmentController.java
@@ -49,4 +49,61 @@
}
}
+ /**
+ * 鏌ヨ澶ф皵璁惧蹇冭烦鍖呮椂闂�
+ *
+ * @return
+ */
+ @GetMapping("/QueryHeartBeatTime")
+ public ResponseVO<Object> QueryHeartBeatTime(@RequestParam(value = "mac", required = false) String mac) {
+ return ResponseUtil.success(airEquipmentService.QueryHeartBeatTime(mac));
+ }
+
+ /**
+ * 璁剧疆蹇冭烦鍖呴棿闅旀椂闂�
+ *
+ * @param mac
+ * @param time
+ * @return
+ */
+ @GetMapping("/setHeartBeatTime")
+ public ResponseVO<Object> setHeartBeatTime(@RequestParam(value = "mac", required = false) String mac,
+ @RequestParam(value = "time", required = false) Integer time) {
+ return ResponseUtil.success(airEquipmentService.setHeartBeatTime(mac, time));
+ }
+
+ /**
+ * 鏌ヨ浼犳劅鍣ㄦ暟閲�/鏁呴殰
+ *
+ * @param mac
+ * @return
+ */
+ @GetMapping("/QuerySensorInfo")
+ public ResponseVO<Object> QuerySensorInfo(@RequestParam(value = "mac", required = false) String mac) {
+ return ResponseUtil.success(airEquipmentService.QuerySensorInfo(mac));
+ }
+
+ /**
+ * 鏌ヨ杞‖浠剁増鏈�
+ *
+ * @param mac
+ * @return
+ */
+ @GetMapping("/QueryVersion")
+ public ResponseVO<Object> QueryVersion(@RequestParam(value = "mac", required = false) String mac) {
+ airEquipmentService.QueryVersion(mac);
+ return ResponseUtil.success(null);
+ }
+
+ /**
+ * 杞噸鍚�
+ *
+ * @param mac
+ * @return
+ */
+ @GetMapping("/Reboot")
+ public ResponseVO<Object> Reboot(@RequestParam(value = "mac", required = false) String mac) {
+ return ResponseUtil.success(airEquipmentService.Reboot(mac));
+ }
+
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereHeartBeatTimeReportInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereHeartBeatTimeReportInnerFrame.java
new file mode 100644
index 0000000..57e2c1b
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereHeartBeatTimeReportInnerFrame.java
@@ -0,0 +1,48 @@
+package com.sandu.ximon.admin.manager.iot.frame.inner.report;
+
+import cn.hutool.core.util.StrUtil;
+import com.sandu.ximon.admin.manager.iot.frame.inner.BaseResponseInnerFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ * 澶ф皵璁惧蹇冭烦鍖呴棿闅旀椂闂�
+ *
+ * @author ZZQ
+ * @date 2022/8/1 10:17
+ */
+//FEA584000C FE 02 0004 FFFF 003C B081260C CC1C105D
+@Data
+@ToString(callSuper = true)
+public class A5AtmosphereHeartBeatTimeReportInnerFrame extends BaseResponseInnerFrame<A5AtmosphereHeartBeatTimeReportInnerFrame> {
+ //闂撮殧鏃堕棿
+ private int intervalTime;
+ //璁惧鍦板潃
+ private String deviceAddress;
+
+ @Override
+ public A5AtmosphereHeartBeatTimeReportInnerFrame transformFrame(String hex) {
+ // 闀垮害涓嶄竴鑷存椂锛岃繑鍥瀗ull
+ if (StrUtil.isBlank(hex) || hex.length() != 24) {
+ System.out.println("鏁版嵁鏍¢獙寮傚父锛�");
+ return null;
+ }
+ // MQTT閫氫俊鏂瑰紡(1)
+ setConnectType(hex.substring(0, 2));
+ // 鍔熻兘鐮�(1)
+ setFunctionCode(hex.substring(2, 4));
+ // 璐熻嵎闀垮害(2)
+ setPayloadLength(hex.substring(4, 8));
+ //璁惧鍦板潃
+ setDeviceAddress(hex.substring(8, 12));
+ //蹇冭烦鍖呴棿闅旀椂闂�
+ setIntervalTime(Integer.parseInt(hex.substring(12, 16), 16));
+
+ setCrc32(hex.substring(hex.length() - 8));
+ // 鏍¢獙CRC32
+ String frame = hex.substring(2, hex.length() - 8);
+ this.setValidate(CRC32Utils.validateFrame(frame, getCrc32()));
+ return this;
+ }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereHeartbeatReportInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereHeartbeatReportInnerFrame.java
index c746883..83c66e0 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereHeartbeatReportInnerFrame.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereHeartbeatReportInnerFrame.java
@@ -70,21 +70,24 @@
// 鍏夊己
private Integer lightIntensity;
// 鍣煶
- private Integer noise;
+ private Double noise;
// PM2.5
private Integer pm25;
// PM10
private Integer pm10;
- // 鎬绘偓娴绮掔墿锛圱SP锛�
- private Integer tsp;
- // SO2浜屾哀鍖栫~/鐢查啗鐩稿鍊�
+ // 闆ㄩ噺
+ private Double rainfall;
+ // SO2浜屾哀鍖栫~鐩稿鍊�
private Integer so2;
+ // 鐢查啗鐩稿鍊�
private Integer ech2o;
- // NO2浜屾哀鍖栨爱/TVOC
+ // NO2浜屾哀鍖栨爱
private Integer no2;
+ // TVOC
private Integer tvoc;
- // CO涓�姘у寲纰� /浜屾哀鍖栫⒊
+ // CO涓�姘у寲纰�
private Integer co;
+ // 浜屾哀鍖栫⒊
private Integer co2;
// O3鑷哀
private Integer o3;
@@ -116,10 +119,10 @@
this.windDirection = parseVal(hex, 18, 22) * .1;
this.pressure = parseVal(hex, 22, 26);
this.lightIntensity = parseVal(hex, 26, 32);
- this.noise = parseVal(hex, 32, 36);
+ this.noise = parseVal(hex, 32, 36) * .1;
this.pm25 = parseVal(hex, 36, 40);
this.pm10 = parseVal(hex, 40, 44);
- this.tsp = parseVal(hex, 44, 48);
+ this.rainfall = parseVal(hex, 44, 48) * .1;
/**
* 浠ヤ笅鍖哄垎鐗堟湰
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereOperationReportInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereOperationReportInnerFrame.java
new file mode 100644
index 0000000..d0361f3
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereOperationReportInnerFrame.java
@@ -0,0 +1,68 @@
+package com.sandu.ximon.admin.manager.iot.frame.inner.report;
+
+import cn.hutool.core.util.StrUtil;
+import com.sandu.ximon.admin.manager.iot.frame.inner.BaseResponseInnerFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ * @author ZZQ
+ * @date 2022/3/14 16:36
+ * 澶ф皵鎿嶄綔鎸囦护鍝嶅簲甯�
+ */
+@Data
+@ToString(callSuper = true)
+public class A5AtmosphereOperationReportInnerFrame extends BaseResponseInnerFrame<A5AtmosphereOperationReportInnerFrame> {
+ //MAC鍦板潃
+ private String mac;
+
+ private String state;
+
+ @Override
+ public A5AtmosphereOperationReportInnerFrame transformFrame(String hex) { // 闀垮害涓嶄竴鑷存椂锛岃繑鍥瀗ull
+ if (StrUtil.isBlank(hex)) {
+ return null;
+ }
+ // MQTT閫氫俊鏂瑰紡(1)
+ setConnectType(hex.substring(0, 2));
+ // 鍔熻兘鐮�(1)
+ setFunctionCode(hex.substring(2, 4));
+ // 璐熻嵎闀垮害(2)
+ setPayloadLength(hex.substring(4, 8));
+ //MAC鍦板潃
+ setMac(hex.substring(8, 12));
+ //纭欢浜や簰鍝嶅簲缁撴灉
+ setState(returnState(hex.substring(12, 14)));
+
+ setCrc32(hex.substring(hex.length() - 8));
+ // 鏍¢獙CRC32
+ String frame = hex.substring(2, hex.length() - 8);
+ this.setValidate(CRC32Utils.validateFrame(frame, getCrc32()));
+ return this;
+ }
+
+ public String returnState(String stateCode) {
+ String State = "";
+ switch (stateCode) {
+ case "00":
+ State = "鎿嶄綔鎴愬姛";
+ break;
+ case "01":
+ State = "鏍¢獙鐮侀敊璇�";
+ break;
+ case "02":
+ State = "闀垮害閿欒";
+ break;
+ case "03":
+ State = "鍐橣lash澶辫触閿欒";
+ break;
+ case "FF":
+ State = "鍏朵粬閿欒";
+ break;
+ default:
+ State = "鏈煡閿欒";
+ }
+ return State;
+ }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereQuerySensorInfoReportInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereQuerySensorInfoReportInnerFrame.java
new file mode 100644
index 0000000..ee808c0
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereQuerySensorInfoReportInnerFrame.java
@@ -0,0 +1,140 @@
+package com.sandu.ximon.admin.manager.iot.frame.inner.report;
+
+import cn.hutool.core.util.StrUtil;
+import com.sandu.ximon.admin.manager.iot.frame.inner.BaseResponseInnerFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.IResponseInnerFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
+import lombok.Data;
+
+/**
+ * 鏌ヨ浼犳劅鍣ㄦ暟閲�/鏁呴殰
+ *
+ * @author ZZQ
+ * @date 2022/8/1 14:02
+ */
+@Data
+public class A5AtmosphereQuerySensorInfoReportInnerFrame extends BaseResponseInnerFrame<A5AtmosphereQuerySensorInfoReportInnerFrame> {
+ //璁惧鍦板潃
+ private String deviceAddress;
+ //浼犳劅鍣ㄤ俊鎭�
+ private SensorInfoPackage sensorInfoPackage;
+
+ @Override
+ public A5AtmosphereQuerySensorInfoReportInnerFrame transformFrame(String hex) {
+ if (StrUtil.isBlank(hex) || hex.length() != 100) {
+ return null;
+ }
+ // MQTT閫氫俊鏂瑰紡(1)
+ setConnectType(hex.substring(0, 2));
+ // 鍔熻兘鐮�(1)
+ setFunctionCode(hex.substring(2, 4));
+ // 璐熻嵎闀垮害(2)
+ setPayloadLength(hex.substring(4, 8));
+ //璁惧鍦板潃
+ setDeviceAddress(hex.substring(8, 12));
+ //浼犳劅鍣ㄤ俊鎭�
+ String infoStr = hex.substring(14, hex.length() - 8);
+ SensorInfoPackage sensorInfoPackage = new SensorInfoPackage().transformFrame(infoStr);
+ setSensorInfoPackage(sensorInfoPackage);
+
+ //鏍¢獙
+ setCrc32(hex.substring(hex.length() - 8));
+ // 鏍¢獙CRC32
+ String frame = hex.substring(2, hex.length() - 8);
+ this.setValidate(CRC32Utils.validateFrame(frame, getCrc32()));
+ return this;
+ }
+
+ @Data
+ public static class SensorInfoPackage implements IResponseInnerFrame<SensorInfoPackage> {
+ // 娓╁害鍊�
+ private String temperature;
+ // 婀垮害鍊�
+ private String humidity;
+ // 椋庨��
+ private String windSpeed;
+ // 椋庡悜
+ private String windDirection;
+ // 椋庡姏
+ private String windPower;
+ // 澶ф皵鍘�
+ private String pressure;
+ // 鍏夊己
+ private String lightIntensity;
+ // 鍣煶
+ private String noise;
+ // PM2.5
+ private String pm25;
+ // PM10
+ private String pm10;
+ // 鎬绘偓娴绮掔墿锛圱SP锛�
+ private String tsp;
+ // 闆ㄩ噺
+ private String rainfall;
+ // 鐢查啗
+ private String ech2o;
+ // TVOC
+ private String tvoc;
+ // 浜屾哀鍖栫⒊
+ private String co2;
+ // SO2浜屾哀鍖栫~鐩稿鍊�
+ private String so2;
+ // NO2浜屾哀鍖栨爱
+ private String no2;
+ // CO涓�姘у寲纰�
+ private String co;
+ // O3鑷哀
+ private String o3;
+ // F姘熷寲鐗�
+ private String fluoride;
+
+ @Override
+ public SensorInfoPackage transformFrame(String hex) {
+ if (StrUtil.isBlank(hex) || hex.length() != 80) {
+ System.out.println("鏁版嵁鏍¢獙寮傚父锛�");
+ return null;
+ }
+ // 娓╁害
+ setTemperature(hex.substring(2, 4));
+ // 婀垮害
+ setHumidity(hex.substring(6, 8));
+ // 椋庨��
+ setWindSpeed(hex.substring(10, 12));
+ // 椋庡悜
+ setWindDirection(hex.substring(14, 16));
+ // 椋庡姏
+ setWindPower(hex.substring(18, 20));
+ // 澶ф皵鍘�
+ setPressure(hex.substring(22, 24));
+ // 鍏夊己
+ setLightIntensity(hex.substring(26, 28));
+ // 鍣煶
+ setNoise(hex.substring(30, 32));
+ // PM2.5
+ setPm25(hex.substring(34, 36));
+ // PM10
+ setPm10(hex.substring(38, 40));
+ // 鎬绘偓娴绮掔墿锛圱SP锛�
+ setTsp(hex.substring(42, 44));
+ // 闆ㄩ噺
+ setRainfall(hex.substring(46, 48));
+ // 鐢查啗
+ setEch2o(hex.substring(50, 52));
+ // TVOC
+ setTvoc(hex.substring(54, 56));
+ // 浜屾哀鍖栫⒊
+ setCo2(hex.substring(58, 60));
+ // SO2浜屾哀鍖栫~鐩稿鍊�
+ setSo2(hex.substring(62, 64));
+ // NO2浜屾哀鍖栨爱
+ setNo2(hex.substring(66, 68));
+ // CO涓�姘у寲纰�
+ setCo(hex.substring(70, 72));
+ // O3鑷哀
+ setO3(hex.substring(74, 76));
+ // F姘熷寲鐗�
+ setFluoride(hex.substring(78, 80));
+ return this;
+ }
+ }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereQueryVersionReportInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereQueryVersionReportInnerFrame.java
new file mode 100644
index 0000000..cec354c
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereQueryVersionReportInnerFrame.java
@@ -0,0 +1,43 @@
+package com.sandu.ximon.admin.manager.iot.frame.inner.report;
+
+import cn.hutool.core.util.StrUtil;
+import com.sandu.ximon.admin.manager.iot.frame.inner.BaseResponseInnerFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.IResponseInnerFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
+import lombok.Data;
+
+/**
+ * 鏌ヨ杞‖浠剁増鏈�
+ *
+ * @author ZZQ
+ * @date 2022/8/1 14:02
+ */
+@Data
+public class A5AtmosphereQueryVersionReportInnerFrame extends BaseResponseInnerFrame<A5AtmosphereQueryVersionReportInnerFrame> {
+ //璁惧鍦板潃
+ private String deviceAddress;
+
+ @Override
+ public A5AtmosphereQueryVersionReportInnerFrame transformFrame(String hex) {
+ if (StrUtil.isBlank(hex) || hex.length() != 100) {
+ return null;
+ }
+ // MQTT閫氫俊鏂瑰紡(1)
+ setConnectType(hex.substring(0, 2));
+ // 鍔熻兘鐮�(1)
+ setFunctionCode(hex.substring(2, 4));
+ // 璐熻嵎闀垮害(2)
+ setPayloadLength(hex.substring(4, 8));
+ //璁惧鍦板潃
+ setDeviceAddress(hex.substring(8, 12));
+ //
+
+ //鏍¢獙
+ setCrc32(hex.substring(hex.length() - 8));
+ // 鏍¢獙CRC32
+ String frame = hex.substring(2, hex.length() - 8);
+ this.setValidate(CRC32Utils.validateFrame(frame, getCrc32()));
+ return this;
+ }
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3OperationReportInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3OperationReportInnerFrame.java
index 0b8a3f0..283faf4 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3OperationReportInnerFrame.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3OperationReportInnerFrame.java
@@ -16,31 +16,7 @@
public class A5C3OperationReportInnerFrame extends BaseResponseInnerFrame<A5C3OperationReportInnerFrame> {
//MAC鍦板潃
private String mac;
- //鍝嶅簲鐘舵��
- // 鏁呴殰鐮佺被鍨嬭〃锛�
- // 1.閫氫俊娴佺▼瓒呮椂
- // 2.鏃犵數鍘�
- // 3.鏃犵數娴�
- // 4.鏃犲姛鐜�
- // 5.鍏呯數鍔熺巼杩囧皬
- // 6.婕忕數
- // 7.璁惧娓╁害杩囬珮
- // 8.璁惧娓╁害杩囦綆
- // 9.鍏呯數瓒呮椂锛堝厖鐢靛姛鐜囪繃灏忓鑷冲厖鐢垫椂闂磋秴闀匡級
- // 10.鏃犵綉缁�
- // 11.杩炴帴涓绘満瓒呮椂
- // 12.杩炴帴鏈嶅姟鍣ㄨ秴鏃�
- // 13.瑙︽懜灞忔棤鍝嶅簲
- // 14.鏇存柊鍐欏叆Flash澶辫触
- // 15.鍐欏叆EEProm澶辫触
- // 16.甯傜數鐢靛帇杩囬珮璀﹀憡
- // 17.甯傜數鐢靛帇杩囧簳璀﹀憡
- // 18.鍦伴攣鏁呴殰锛堝綋鍓嶄负瑙i攣鐘舵�侊紝涓嶈兘閿佷笂锛�
- // 19.鍦伴攣鏁呴殰锛堝綋鍓嶄负閿佷笂鐘舵�侊紝涓嶈兘瑙i攣锛�
- // 20.鍏呯數鍙�1鏁呴殰(涓嶈兘浣跨敤锛�
- // 21.鍏呯數鍙�2鏁呴殰(涓嶈兘浣跨敤锛夛紙鏆備笉鐢級
- // 22. 鍏呯數鍙�1鏃犳硶涓庤溅鏈洪�氳
- // 23. 鍏呯數鍙�2鏃犳硶涓庤溅鏈洪�氳锛堟殏涓嶇敤锛�
+
private String state;
@Override
@@ -73,74 +49,19 @@
State = "鎿嶄綔鎴愬姛";
break;
case "01":
- State = "閫氫俊娴佺▼瓒呮椂";
+ State = "鏍¢獙鐮侀敊璇�";
break;
case "02":
- State = "鏃犵數鍘�";
+ State = "闀垮害閿欒";
break;
case "03":
- State = "鏃犵數娴�";
+ State = "鍐橣lash澶辫触閿欒";
break;
- case "04":
- State = "鏃犲姛鐜�";
+ case "FF":
+ State = "鍏朵粬閿欒";
break;
- case "05":
- State = "鍏呯數鍔熺巼杩囧皬";
- break;
- case "06":
- State = "婕忕數";
- break;
- case "07":
- State = "璁惧娓╁害杩囬珮";
- break;
- case "08":
- State = "璁惧娓╁害杩囦綆";
- break;
- case "09":
- State = "鍏呯數瓒呮椂锛堝厖鐢靛姛鐜囪繃灏忓鑷冲厖鐢垫椂闂磋秴闀匡級";
- break;
- case "10":
- State = "鏃犵綉缁�";
- break;
- case "11":
- State = "杩炴帴涓绘満瓒呮椂";
- break;
- case "12":
- State = "杩炴帴鏈嶅姟鍣ㄨ秴鏃�";
- break;
- case "13":
- State = "瑙︽懜灞忔棤鍝嶅簲";
- break;
- case "14":
- State = "鏇存柊鍐欏叆Flash澶辫触";
- break;
- case "15":
- State = "鍐欏叆EEProm澶辫触";
- break;
- case "16":
- State = "甯傜數鐢靛帇杩囬珮璀﹀憡";
- break;
- case "17":
- State = "甯傜數鐢靛帇杩囧簳璀﹀憡";
- break;
- case "18":
- State = "鍦伴攣鏁呴殰锛堝綋鍓嶄负瑙i攣鐘舵�侊紝涓嶈兘閿佷笂锛�";
- break;
- case "19":
- State = "鍦伴攣鏁呴殰锛堝綋鍓嶄负閿佷笂鐘舵�侊紝涓嶈兘瑙i攣锛�";
- break;
- case "20":
- State = "鍏呯數鍙�1鏁呴殰(涓嶈兘浣跨敤锛�";
- break;
- case "21":
- State = "鍏呯數鍙�2鏁呴殰(涓嶈兘浣跨敤锛夛紙鏆備笉鐢級";
- break;
- case "22":
- State = "鍏呯數鍙�1鏃犳硶涓庤溅鏈洪�氳";
- break;
- case "23":
- State = "鍏呯數鍙�2鏃犳硶涓庤溅鏈洪�氳锛堟殏涓嶇敤锛�";
default:
+ State = "鏈煡閿欒";
}
return State;
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataReqInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereHeartBeatReqInnerFrame.java
similarity index 85%
rename from ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataReqInnerFrame.java
rename to ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereHeartBeatReqInnerFrame.java
index 119eac9..88e82b0 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataReqInnerFrame.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereHeartBeatReqInnerFrame.java
@@ -11,14 +11,14 @@
* @Version 1.0
*/
-public class AirDataReqInnerFrame implements IRequestInnerFrame {
+public class AtmosphereHeartBeatReqInnerFrame implements IRequestInnerFrame {
-// private final String payload;
+// private String payload;
// private final String functionCode = DataTransportOrderType.LightTimer.getCode();
// private final String payloadLength;
- public AirDataReqInnerFrame() {
+ public AtmosphereHeartBeatReqInnerFrame() {
}
@Override
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataNewReqInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereNewReqInnerFrame.java
similarity index 89%
rename from ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataNewReqInnerFrame.java
rename to ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereNewReqInnerFrame.java
index aaf2cf3..e505b8d 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataNewReqInnerFrame.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereNewReqInnerFrame.java
@@ -10,14 +10,14 @@
* @Date 2022/4/24
*/
-public class AirDataNewReqInnerFrame implements IRequestInnerFrame {
+public class AtmosphereNewReqInnerFrame implements IRequestInnerFrame {
// private final String payload;
// private final String functionCode = DataTransportOrderType.LightTimer.getCode();
// private final String payloadLength;
- public AirDataNewReqInnerFrame() {
+ public AtmosphereNewReqInnerFrame() {
}
@Override
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataReqInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereQueryHeartBeatTimeReqInnerFrame.java
similarity index 61%
copy from ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataReqInnerFrame.java
copy to ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereQueryHeartBeatTimeReqInnerFrame.java
index 119eac9..62b1a3b 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataReqInnerFrame.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereQueryHeartBeatTimeReqInnerFrame.java
@@ -6,28 +6,18 @@
import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
/**
- * @Author liuhaonan
- * @Date 2022/2/15 11:07
- * @Version 1.0
+ * 鏌ヨ澶ф皵璁惧蹇冭烦鍖呮椂闂�
+ *
+ * @author ZZQ
+ * @date 2022/7/29 15:47
*/
-
-public class AirDataReqInnerFrame implements IRequestInnerFrame {
-
-// private final String payload;
-// private final String functionCode = DataTransportOrderType.LightTimer.getCode();
-// private final String payloadLength;
-
-
- public AirDataReqInnerFrame() {
- }
-
+public class AtmosphereQueryHeartBeatTimeReqInnerFrame implements IRequestInnerFrame {
@Override
public String getEncodeFrame() {
- String functionCode = AtmoFunctionCode.QueryHeartBeat.getCode();
+ String functionCode = AtmoFunctionCode.QueryHeartBeatTime.getCode();
String payloadLength = "0002";
String payload = "FFFF";
String frame = functionCode + payloadLength + payload;
return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase());
}
-
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataReqInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereQuerySensorInfoReqInnerFrame.java
similarity index 61%
copy from ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataReqInnerFrame.java
copy to ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereQuerySensorInfoReqInnerFrame.java
index 119eac9..b4a7daa 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataReqInnerFrame.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereQuerySensorInfoReqInnerFrame.java
@@ -6,28 +6,18 @@
import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
/**
- * @Author liuhaonan
- * @Date 2022/2/15 11:07
- * @Version 1.0
+ * 鏌ヨ浼犳劅鍣ㄦ暟閲�/鏁呴殰
+ *
+ * @author ZZQ
+ * @date 2022/8/1 10:01
*/
-
-public class AirDataReqInnerFrame implements IRequestInnerFrame {
-
-// private final String payload;
-// private final String functionCode = DataTransportOrderType.LightTimer.getCode();
-// private final String payloadLength;
-
-
- public AirDataReqInnerFrame() {
- }
-
+public class AtmosphereQuerySensorInfoReqInnerFrame implements IRequestInnerFrame {
@Override
public String getEncodeFrame() {
- String functionCode = AtmoFunctionCode.QueryHeartBeat.getCode();
+ String functionCode = AtmoFunctionCode.QuerySensorInfo.getCode();
String payloadLength = "0002";
String payload = "FFFF";
String frame = functionCode + payloadLength + payload;
return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase());
}
-
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataReqInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereQueryVersionReqInnerFrame.java
similarity index 62%
copy from ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataReqInnerFrame.java
copy to ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereQueryVersionReqInnerFrame.java
index 119eac9..97132e0 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataReqInnerFrame.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereQueryVersionReqInnerFrame.java
@@ -6,28 +6,18 @@
import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
/**
- * @Author liuhaonan
- * @Date 2022/2/15 11:07
- * @Version 1.0
+ * 鏌ヨ澶ф皵璁惧杞‖浠剁増鏈�
+ *
+ * @author ZZQ
+ * @date 2022/8/1 10:03
*/
-
-public class AirDataReqInnerFrame implements IRequestInnerFrame {
-
-// private final String payload;
-// private final String functionCode = DataTransportOrderType.LightTimer.getCode();
-// private final String payloadLength;
-
-
- public AirDataReqInnerFrame() {
- }
-
+public class AtmosphereQueryVersionReqInnerFrame implements IRequestInnerFrame {
@Override
public String getEncodeFrame() {
- String functionCode = AtmoFunctionCode.QueryHeartBeat.getCode();
+ String functionCode = AtmoFunctionCode.QueryVersion.getCode();
String payloadLength = "0002";
String payload = "FFFF";
String frame = functionCode + payloadLength + payload;
return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase());
}
-
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataReqInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereRebootReqInnerFrame.java
similarity index 62%
copy from ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataReqInnerFrame.java
copy to ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereRebootReqInnerFrame.java
index 119eac9..5235b3f 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AirDataReqInnerFrame.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereRebootReqInnerFrame.java
@@ -6,28 +6,18 @@
import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
/**
- * @Author liuhaonan
- * @Date 2022/2/15 11:07
- * @Version 1.0
+ * 澶ф皵璁惧杞噸鍚�
+ *
+ * @author ZZQ
+ * @date 2022/7/29 15:47
*/
-
-public class AirDataReqInnerFrame implements IRequestInnerFrame {
-
-// private final String payload;
-// private final String functionCode = DataTransportOrderType.LightTimer.getCode();
-// private final String payloadLength;
-
-
- public AirDataReqInnerFrame() {
- }
-
+public class AtmosphereRebootReqInnerFrame implements IRequestInnerFrame {
@Override
public String getEncodeFrame() {
- String functionCode = AtmoFunctionCode.QueryHeartBeat.getCode();
+ String functionCode = AtmoFunctionCode.Reboot.getCode();
String payloadLength = "0002";
String payload = "FFFF";
String frame = functionCode + payloadLength + payload;
return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase());
}
-
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereSetHeartBeatTimeReqInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereSetHeartBeatTimeReqInnerFrame.java
new file mode 100644
index 0000000..cd5c492
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereSetHeartBeatTimeReqInnerFrame.java
@@ -0,0 +1,41 @@
+package com.sandu.ximon.admin.manager.iot.frame.inner.request;
+
+import com.sandu.ximon.admin.manager.iot.frame.inner.IRequestInnerFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.enums.AtmoFunctionCode;
+import com.sandu.ximon.admin.manager.iot.rrpc.enums.MQTTConnectTypeEnum;
+import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
+
+/**
+ * 鏌ヨ澶ф皵璁惧蹇冭烦鍖呮椂闂�
+ *
+ * @author ZZQ
+ * @date 2022/7/29 15:47
+ */
+public class AtmosphereSetHeartBeatTimeReqInnerFrame implements IRequestInnerFrame {
+ private String payload;
+
+ public AtmosphereSetHeartBeatTimeReqInnerFrame(int time) {
+ String data = Integer.toHexString(time);
+ switch (data.length()) {
+ case 1:
+ data = "000" + data;
+ break;
+ case 2:
+ data = "00" + data;
+ break;
+ case 3:
+ data = "0" + data;
+ break;
+ default:
+ }
+ payload = "FFFF" + data;
+ }
+
+ @Override
+ public String getEncodeFrame() {
+ String functionCode = AtmoFunctionCode.SettingHeartBeatTime.getCode();
+ String payloadLength = "0004";
+ String frame = functionCode + payloadLength + payload;
+ return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase());
+ }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java
index a1de561..e077f5d 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java
@@ -11,10 +11,50 @@
QueryHeartBeat("01"),
// 鏌ヨ蹇冭烦鍖呮椂闂�
QueryHeartBeatTime("02"),
+ // 鏌ヨ浼犳劅鍣ㄦ暟閲�/鏁呴殰
+ QuerySensorInfo("03"),
+ // 鏌ヨ杞‖浠剁増鏈�
+ QueryVersion("04"),
// 閲嶅惎
Reboot("10"),
// 璁剧疆蹇冭烦鍖呴棿闅�
SettingHeartBeatTime("11"),
+ //璁剧疆鍦板潃
+ SettingAddress("12"),
+ //浼犳劅鍣ㄥ姛鑳藉紑鍏�
+ SensorSwitch("13"),
+ //璁剧疆鏁版嵁淇鍊�-娓╁害
+ Setting_Data_Correction_temperature("14"),
+ //璁剧疆鏁版嵁淇鍊�-婀垮害
+ Setting_Data_Correction_humidity("15"),
+ //璁剧疆鏁版嵁淇鍊�-椋庨��
+ Setting_Data_Correction_windSpeed("16"),
+ //璁剧疆鏁版嵁淇鍊�-椋庡悜
+ Setting_Data_Correction_windDirection("17"),
+ //璁剧疆鏁版嵁淇鍊�-姘斿帇
+ Setting_Data_Correction_airPressure("18"),
+ //璁剧疆鏁版嵁淇鍊�-鍏夊己
+ Setting_Data_Correction_lightIntensity("19"),
+ //璁剧疆鏁版嵁淇鍊�-鍣煶
+ Setting_Data_Correction_noise("1A"),
+ //璁剧疆鏁版嵁淇鍊�-PM2.5
+ Setting_Data_Correction_PM2_5("1B"),
+ //璁剧疆鏁版嵁淇鍊�-PM10
+ Setting_Data_Correction_PM10("1C"),
+ //璁剧疆鏁版嵁淇鍊�-闆ㄩ噺
+ Setting_Data_Correction_rainfall("1D"),
+ //璁剧疆鏁版嵁淇鍊�-SO2浜屾哀鍖栫~
+ Setting_Data_Correction_SO2("1E"),
+ //璁剧疆鏁版嵁淇鍊�-NO2浜屾哀鍖栨爱
+ Setting_Data_Correction_NO2("1F"),
+ //璁剧疆鏁版嵁淇鍊�-CO涓�姘у寲纰�
+ Setting_Data_Correction_CO("20"),
+ //璁剧疆鏁版嵁淇鍊�-O3鑷哀
+ Setting_Data_Correction_O3("21"),
+ //璁剧疆鏁版嵁淇鍊�-F姘熷寲鐗�
+ Setting_Data_Correction_F("22"),
+
+
// 澶ф皵璁惧蹇冭烦鍖呭瓨鍌�
AIR_HEARTBEAT("air_heartbeat:air_heartbeat"),
// 澶ф皵璁惧蹇冭烦鍖呭瓨鍌�(璁惧鐘舵��))
@@ -37,4 +77,13 @@
AtmoFunctionCode(String code) {
this.code = code;
}
+
+ public static AtmoFunctionCode getByCode(String code) {
+ for (AtmoFunctionCode atmoFunctionCode : values()) {
+ if (atmoFunctionCode.getCode().equals(code)) {
+ return atmoFunctionCode;
+ }
+ }
+ return null;
+ }
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java
index bac6106..15e84d3 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java
@@ -94,6 +94,7 @@
}
+
/**
* +
* 鏍规嵁鐏潌id鏌ヨ澶ф皵鏁版嵁
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java
index 268fc5d..0cc94e5 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java
@@ -5,7 +5,16 @@
import com.sandu.common.execption.BusinessException;
import com.sandu.common.object.BaseConditionVO;
import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.common.util.SpringContextHolder;
+import com.sandu.ximon.admin.manager.iot.frame.A5Frame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereHeartBeatTimeReportInnerFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereOperationReportInnerFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereQuerySensorInfoReportInnerFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.request.*;
+import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5OrderEnum;
import com.sandu.ximon.admin.manager.iot.rrpc.enums.AtmoFunctionCode;
+import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService;
import com.sandu.ximon.admin.security.SecurityUtils;
import com.sandu.ximon.admin.utils.RedisUtils;
import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils;
@@ -98,7 +107,7 @@
/**
* 鍒犻櫎澶ф皵璁惧 鏃ュ織璁板綍寮�濮�
*/
- List<String> listCode=new ArrayList<>(1);
+ List<String> listCode = new ArrayList<>(1);
listCode.add(airEquipment.getMac());
String content = "{璁惧code锛�" + airEquipment.getMac() + "}";
@@ -132,4 +141,149 @@
}
return equipmentInfo;
}
+
+ /**
+ * 鏌ヨ澶ф皵璁惧蹇冭烦鍖呮椂闂�
+ */
+ public String QueryHeartBeatTime(String mac) {
+ AirEquipment airEquipment = SpringContextHolder.getBean(AirEquipmentService.class).
+ getOne(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, mac).last("limit 1"));
+
+ if (airEquipment == null) {
+ throw new BusinessException("澶ф皵璁惧涓嶅瓨鍦紒");
+ }
+
+ AtmosphereQueryHeartBeatTimeReqInnerFrame atmosphereQueryHeartBeatTimeReqInnerFrame = new AtmosphereQueryHeartBeatTimeReqInnerFrame();
+ A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode(), atmosphereQueryHeartBeatTimeReqInnerFrame);
+ System.out.println(a5Frame + " --------a5Frame");
+ CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(mac, a5Frame);
+ System.out.println(commonFrame + " -----------commonFrame");
+
+// FEA504000AFE020002FFFF014062EC --------a5Frame
+// FEA584000CFE020004FFFF003CB081260CCC1C105D -----------commonFrame
+ A5AtmosphereHeartBeatTimeReportInnerFrame a5AtmosphereHeartBeatTimeReportInnerFrame
+ = new A5AtmosphereHeartBeatTimeReportInnerFrame().transformFrame(commonFrame.getPayload());
+
+ if (a5AtmosphereHeartBeatTimeReportInnerFrame != null && a5AtmosphereHeartBeatTimeReportInnerFrame.isValidate()) {
+ return "璇ュぇ姘旇澶囧績璺冲寘闂撮殧鏃堕棿涓猴細" + a5AtmosphereHeartBeatTimeReportInnerFrame.getIntervalTime() + "s";
+ } else {
+ throw new BusinessException("鏁版嵁鏍¢獙寮傚父锛�");
+ }
+ }
+
+ /**
+ * 璁剧疆澶ф皵璁惧蹇冭烦鍖呴棿闅旀椂闂�
+ *
+ * @param mac
+ * @param time
+ */
+ public String setHeartBeatTime(String mac, Integer time) {
+ if (time < 30) {
+ throw new BusinessException("蹇冭烦鍖呴棿闅旀椂闂翠笉鑳藉皯浜�30s锛�");
+ }
+ AirEquipment airEquipment = SpringContextHolder.getBean(AirEquipmentService.class).
+ getOne(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, mac).last("limit 1"));
+ if (airEquipment == null) {
+ throw new BusinessException("澶ф皵璁惧涓嶅瓨鍦紒");
+ }
+
+ AtmosphereSetHeartBeatTimeReqInnerFrame atmosphereSetHeartBeatTimeReqInnerFrame = new AtmosphereSetHeartBeatTimeReqInnerFrame(time);
+ A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode(), atmosphereSetHeartBeatTimeReqInnerFrame);
+ System.out.println(a5Frame + " --------a5Frame");
+ CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(mac, a5Frame);
+ System.out.println(commonFrame + " -----------commonFrame");
+
+ //FEA584000BFE110003FFFF00464116EC58FC0C8F
+ A5AtmosphereOperationReportInnerFrame a5AtmosphereOperationReportInnerFrame
+ = new A5AtmosphereOperationReportInnerFrame().transformFrame(commonFrame.getPayload());
+ if (a5AtmosphereOperationReportInnerFrame != null && a5AtmosphereOperationReportInnerFrame.isValidate()) {
+ return a5AtmosphereOperationReportInnerFrame.getState();
+ } else {
+ throw new BusinessException("鏁版嵁鏍¢獙寮傚父锛�");
+ }
+ }
+
+ /**
+ * 鏌ヨ浼犳劅鍣ㄦ暟閲�/鏁呴殰
+ *
+ * @param mac
+ * @return
+ */
+ public A5AtmosphereQuerySensorInfoReportInnerFrame.SensorInfoPackage QuerySensorInfo(String mac) {
+ AirEquipment airEquipment = SpringContextHolder.getBean(AirEquipmentService.class).
+ getOne(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, mac).last("limit 1"));
+
+ if (airEquipment == null) {
+ throw new BusinessException("澶ф皵璁惧涓嶅瓨鍦紒");
+ }
+
+ AtmosphereQuerySensorInfoReqInnerFrame atmosphereQuerySensorInfoReqInnerFrame = new AtmosphereQuerySensorInfoReqInnerFrame();
+ A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode(), atmosphereQuerySensorInfoReqInnerFrame);
+ System.out.println(a5Frame + " --------a5Frame");
+ CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(mac, a5Frame);
+ System.out.println(commonFrame + " -----------commonFrame");
+
+ A5AtmosphereQuerySensorInfoReportInnerFrame atmosphereQuerySensorInfoReportInnerFrame
+ = new A5AtmosphereQuerySensorInfoReportInnerFrame().transformFrame(commonFrame.getPayload());
+
+ if (atmosphereQuerySensorInfoReportInnerFrame != null && atmosphereQuerySensorInfoReportInnerFrame.isValidate()) {
+ return atmosphereQuerySensorInfoReportInnerFrame.getSensorInfoPackage();
+ } else {
+ throw new BusinessException("鏁版嵁鏍¢獙寮傚父锛�");
+ }
+ }
+
+ /**
+ * 鏌ヨ杞‖浠剁増鏈�
+ *
+ * @param mac
+ * @return
+ */
+ public void QueryVersion(String mac) {
+ //TODO
+ AirEquipment airEquipment = SpringContextHolder.getBean(AirEquipmentService.class).
+ getOne(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, mac).last("limit 1"));
+
+ if (airEquipment == null) {
+ throw new BusinessException("澶ф皵璁惧涓嶅瓨鍦紒");
+ }
+
+ AtmosphereQueryVersionReqInnerFrame atmosphereQueryVersionReqInnerFrame = new AtmosphereQueryVersionReqInnerFrame();
+ A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode(), atmosphereQueryVersionReqInnerFrame);
+ System.out.println(a5Frame + " --------a5Frame");
+ CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(mac, a5Frame);
+ System.out.println(commonFrame + " -----------commonFrame");
+
+// FEA504000AFE040002FFFF8E00974C --------a5Frame
+// FEA584000BFE040003FFFFFF38586A49EE3EAF62 -----------commonFrame
+ }
+
+ /**
+ * 杞噸鍚�
+ *
+ * @param mac
+ * @return
+ */
+ public String Reboot(String mac) {
+ AirEquipment airEquipment = SpringContextHolder.getBean(AirEquipmentService.class).
+ getOne(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, mac).last("limit 1"));
+ if (airEquipment == null) {
+ throw new BusinessException("澶ф皵璁惧涓嶅瓨鍦紒");
+ }
+
+ AtmosphereRebootReqInnerFrame atmosphereRebootReqInnerFrame = new AtmosphereRebootReqInnerFrame();
+ A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode(), atmosphereRebootReqInnerFrame);
+ System.out.println(a5Frame + " --------a5Frame");
+ CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(mac, a5Frame);
+ System.out.println(commonFrame + " -----------commonFrame");
+
+ A5AtmosphereOperationReportInnerFrame a5AtmosphereOperationReportInnerFrame =
+ new A5AtmosphereOperationReportInnerFrame().transformFrame(commonFrame.getPayload());
+
+ if (a5AtmosphereOperationReportInnerFrame != null && a5AtmosphereOperationReportInnerFrame.isValidate()) {
+ return a5AtmosphereOperationReportInnerFrame.getState();
+ } else {
+ throw new BusinessException("鏁版嵁鏍¢獙寮傚父锛�");
+ }
+ }
}
--
Gitblit v1.9.3