From 43fb2ac961d450659a270f1db9053ec545327aa1 Mon Sep 17 00:00:00 2001
From: liuhaonan <konodioda2333@vip.qq.com>
Date: 星期四, 09 十二月 2021 15:37:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/response/A5LightHeartbeatRespInnerFrame.java |  123 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 123 insertions(+), 0 deletions(-)

diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/response/A5LightHeartbeatRespInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/response/A5LightHeartbeatRespInnerFrame.java
new file mode 100644
index 0000000..e0ffc63
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/response/A5LightHeartbeatRespInnerFrame.java
@@ -0,0 +1,123 @@
+package com.sandu.ximon.admin.manager.iot.frame.inner.response;
+
+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;
+import lombok.ToString;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/6 18:20
+ * A5-81-02
+ * 鐏蹇冭烦鍖� 搴旂瓟
+ */
+@Data
+@ToString(callSuper = true)
+public class A5LightHeartbeatRespInnerFrame extends BaseResponseInnerFrame<A5LightHeartbeatRespInnerFrame> {
+
+    //  鐩爣鍦板潃    2
+    private String destinationAddress;
+    //  蹇冭烦鍖呮暟鎹�   58
+    private HeartBeatDataPackage heartBeatDataPackage;
+
+    private String originFrame;
+
+    @Override
+    public A5LightHeartbeatRespInnerFrame 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));
+
+        setDestinationAddress(hex.substring(8, 12));
+
+        String heartBeatData = hex.substring(12, 108);
+        HeartBeatDataPackage heartBeatDataPackage = new HeartBeatDataPackage();
+        heartBeatDataPackage.transformFrame(heartBeatData);
+        setHeartBeatDataPackage(heartBeatDataPackage);
+
+        setCrc32(hex.substring(108, 116));
+        //  鏍¢獙CRC32
+        String frame = hex.substring(2, hex.length() - 8);
+        this.setValidate(CRC32Utils.validateFrame(frame, getCrc32()));
+        return this;
+    }
+
+    @Data
+    public static class HeartBeatDataPackage implements IResponseInnerFrame<HeartBeatDataPackage> {
+        //  骞碦TC 1
+        private String year;
+        //  鏈圧TC 1
+        private String month;
+        //  鏃TC 1
+        private String day;
+        //  鏃禦TC 1
+        private String hour;
+        //  鍒哛TC 1
+        private String min;
+        //  绉扲TC 1
+        private String sec;
+        //  璁惧娓╁害 2  1瀛楄妭鏁存暟1瀛楄妭灏忔暟
+        private String deviceTemperature;
+        //  浜害鐧惧垎姣� 1
+        private String lightPercent;
+        //  鐢电綉鐢靛帇 2 1瀛楄妭鏁存暟1瀛楄妭灏忔暟
+        private String gridVol;
+        //  鐢电綉鐢垫祦 2 1瀛楄妭鏁存暟1瀛楄妭灏忔暟
+        private String gridCur;
+        //  璧吂 2 1瀛楄妭鏁存暟1瀛楄妭灏忔暟
+        private String hertz;
+        //  鍔熺巼鍥犵礌 2 1瀛楄妭鏁存暟1瀛楄妭灏忔暟
+        private String powerFactor;
+        //  鏈夊姛鍔熺巼 2 1瀛楄妭鏁存暟1瀛楄妭灏忔暟
+        private String activePower;
+        //  鏃犲姛鍔熺巼 2 1瀛楄妭鏁存暟1瀛楄妭灏忔暟
+        private String reactivePower;
+        //  鏈�杩戜竴娆′寒鐏椂闂� 4 绉�
+        private String recentlyLightSec;
+        //  绱浜伅鏃堕棿 4
+        private String totalLightTime;
+        //  鏈�杩戜竴娆$敤鐢电數閲� 4
+        private String recentlyUsingPower;
+        //  绱鐢ㄧ數鐢甸噺 4
+        private String totalUsingPower;
+        //  淇濈暀 11
+        private String retain;
+        //  鍘熷抚
+        private String originFrame;
+
+        @Override
+        public HeartBeatDataPackage transformFrame(String hex) {
+            this.originFrame = hex;
+            this.year = hex.substring(0, 2);
+            this.month = hex.substring(2, 4);
+            this.day = hex.substring(4, 6);
+            this.hour = hex.substring(6, 8);
+            this.min = hex.substring(8, 10);
+            this.sec = hex.substring(10, 12);
+
+            this.deviceTemperature = hex.substring(12, 16);
+            this.lightPercent = hex.substring(16, 18);
+            this.gridVol = hex.substring(18, 22);
+            this.gridCur = hex.substring(22, 26);
+            this.hertz = hex.substring(26, 30);
+            this.powerFactor = hex.substring(30, 34);
+            this.activePower = hex.substring(34, 38);
+            this.reactivePower = hex.substring(38, 42);
+            this.recentlyLightSec = hex.substring(42, 50);
+            this.totalLightTime = hex.substring(50, 58);
+            this.recentlyUsingPower = hex.substring(58, 66);
+            this.totalUsingPower = hex.substring(66, 74);
+            this.retain = hex.substring(74, 96);
+            return this;
+        }
+    }
+}

--
Gitblit v1.9.3