| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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) { |
| | | // é¿åº¦ä¸ä¸è´æ¶ï¼è¿ånull |
| | | 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> { |
| | | // å¹´RTC 1 |
| | | private String year; |
| | | // æRTC 1 |
| | | private String month; |
| | | // æ¥RTC 1 |
| | | private String day; |
| | | // æ¶RTC 1 |
| | | private String hour; |
| | | // åRTC 1 |
| | | private String min; |
| | | // ç§RTC 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; |
| | | } |
| | | } |
| | | } |