From 47675876dbc24ea2fa54a1f4090f1a998ed2e5cf Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期五, 06 八月 2021 16:18:11 +0800 Subject: [PATCH] 2021-08-06 1.配合海克传感器,调整处理模拟量传感器状态 --- hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java | 115 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 98 insertions(+), 17 deletions(-) diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java index 8582c35..0888dc8 100644 --- a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java +++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java @@ -181,6 +181,9 @@ case Configuration.ReadRemark://2021-01-05 000E鎼滅储澶囨敞澶勭悊 handleReadRemarkBackData(getDatas); break; + case Configuration.READ_MAC_COMMAND://2021-01-07 F003璇昏澶嘙ac + handleReadMacBackData(getDatas); + break; // 鎺у埗璁惧 case Configuration.LIGHT_CTRL_BACK_COMMAND: case Configuration.CURTAIN_CTRL_BACK_COMMAND: @@ -233,8 +236,13 @@ case Configuration.LIGHT_STATE_BACK_COMMAND: case Configuration.CURTAIN_STATE_BACK_COMMAND: case Configuration.AIR_STATE_BACK_COMMAND: - case Configuration.SENSOR_STATE_BACK_COMMAND: handleStateData(getDatas); + break; + case Configuration.SENSOR_STATE_BACK_COMMAND: + handleSensorAnalogStateData(getDatas, true); + break; + case Configuration.SENSOR_BROADCAST_COMMAND://浼犳劅鍣ㄦā鎷熼噺骞挎挱 + handleSensorAnalogStateData(getDatas, false); break; //鑾峰彇鏂伴璁惧鐘舵�� 20190709鏂板 case Configuration.FRESH_AIR_STATE_BACK_COMMAND: @@ -400,6 +408,7 @@ /** * ReadRemark * 鎼滅储璁惧000E 鍥炲澶勭悊 + * * @param getDatas */ public static void handleReadRemarkBackData(UdpDataBean getDatas) { @@ -412,6 +421,26 @@ addBytes, getDatas.port, getDatas.ipAddress); } + + /** + * READ MAC + * 璇诲彇MAC 鍥炲澶勭悊 + * + * @param getDatas + */ + public static void handleReadMacBackData(UdpDataBean getDatas) { + //Mac鍦板潃8涓猙yte + byte[] addBytes = new byte[8]; + addBytes[0] = (byte) 200; + //鎶婄湡瀹炵殑MAC璧嬪�肩粰addBytes +// System.arraycopy(remarkByte, 0, addBytes, 0, Math.min(remarkByte.length, 20)); + HDLCommand.cusSendCommand(Configuration.READ_MAC_BACK_COMMAND, + getDatas.sourceSubnetID, + getDatas.sourceDeviceID, + addBytes, + getDatas.port, getDatas.ipAddress); + } + /** * 澶勭悊RCU鎼滅储鏁版嵁 @@ -2054,15 +2083,35 @@ // aa += (getDatas.addBytes[i] & 0xff) + ","; // } // HDLLog.info( aa); - float curState; - if (getDatas.addBytes.length >= 28) { - curState = DataConverseUtil.byte2Float(Arrays.copyOfRange(getDatas.addBytes, 24, 27)); + //浣跨敤骞茶妭鐐规寚浠ょ殑浼犳劅鍣� + if (DeviceParser.getIfDryContactSensor(infos.get(appPos).getLittleType())) { + //骞茶妭鐐逛紶鎰熷櫒锛岃鐗规畩澶勭悊淇敼鍥炶矾鍙� + int curState; + if (getDatas.addBytes.length >= 26) { + curState = (int) (getDatas.addBytes[24] & 0xff); + devicesDataList.get(devPos).getAppliancesInfoList().get(appPos).setChannelNum(getDatas.addBytes[25] & 0xff); + + } else { + curState = (int) (getDatas.addBytes[getDatas.addBytes.length - 1] & 0xff); + } + + devicesDataList.get(devPos).getAppliancesInfoList().get(appPos).setCurState(curState); + devicesDataList.get(devPos).getAppliancesInfoList().get(appPos).setIntCurState((int) curState); } else { - curState = (float) (getDatas.addBytes[getDatas.addBytes.length - 1] & 0xff); + //鏍囧噯妯℃嫙閲忎紶鎰熷櫒 + float curState; + if (getDatas.addBytes.length >= 28) { + curState = DataConverseUtil.byte2Float(Arrays.copyOfRange(getDatas.addBytes, 24, 27)); + + } else { + curState = (float) (getDatas.addBytes[getDatas.addBytes.length - 1] & 0xff); + } + devicesDataList.get(devPos).getAppliancesInfoList().get(appPos).setCurState(curState); + devicesDataList.get(devPos).getAppliancesInfoList().get(appPos).setIntCurState((int) curState); } - devicesDataList.get(devPos).getAppliancesInfoList().get(appPos).setCurState(curState); - devicesDataList.get(devPos).getAppliancesInfoList().get(appPos).setIntCurState((int) curState); + + break; case Configuration.FRESH_AIR_BIG_TYPE://20190711鏂板 switch (infos.get(appPos).getLittleType()) { @@ -2248,8 +2297,40 @@ } break; - case Configuration.SENSOR_BIG_TYPE: - isGetDeviceStateSuccess = true; + + default: + HDLLog.info("handle state 娌℃湁鎵惧埌鍖归厤绫诲瀷"); + break; + } + + } + break outter; + } + } + } + + /** + * 澶勭悊鍚勭浼犳劅鍣ㄦā鎷熼噺鐘舵�佹暟鎹� + * 2021-08-05 + * + * @param getDatas + */ + private static void handleSensorAnalogStateData(UdpDataBean getDatas, boolean isState) { + outter: + for (int i = 0, len = devicesDataList.size(); i < len; i++) { + if (devicesDataList.get(i).getSourceSubnetID() == getDatas.sourceSubnetID + && devicesDataList.get(i).getSourceDeviceID() == getDatas.sourceDeviceID) { + List<AppliancesInfo> infos = devicesDataList.get(i).getAppliancesInfoList(); + for (int j = 0, len2 = infos.size(); j < len2; j++) { + if (devicesDataList.get(i).getAppliancesInfoList().get(j).getBigType() == Configuration.SENSOR_BIG_TYPE) { + //澶х被鏄�5 鍖归厤灏忕被浠ュ強鍥炶矾鍙� + if (getDatas.addBytes[0] == Configuration.SENSOR_BIG_TYPE + && getDatas.addBytes[1] == devicesDataList.get(i).getAppliancesInfoList().get(j).getLittleType() + && getDatas.addBytes[2] == devicesDataList.get(i).getAppliancesInfoList().get(j).getChannelNum()) { + + if (isState) { + isGetDeviceStateSuccess = true; + } AppliancesInfo sensorInfo = devicesDataList.get(i).getAppliancesInfoList().get(j); float value = DataConverseUtil.byte2Float(Arrays.copyOfRange(getDatas.addBytes, 5, 8)); devicesDataList.get(i).getAppliancesInfoList().get(j).setCurState(value); @@ -2257,8 +2338,8 @@ sensorInfo.setCurState(value); - String unite = ""; + boolean ifNeedPost = true; switch (sensorInfo.getDeviceType()) { case HDLApConfig.TYPE_SENSOR_DRY_CONTACT: unite = ""; @@ -2398,18 +2479,18 @@ unite = "W"; break; default: + ifNeedPost = false; unite = "鏈煡鍗曚綅"; break; } + if (ifNeedPost) { + HDLLog.info("鍙戦�佷紶鎰熷櫒閫氱煡鏇存柊"); + EventBus.getDefault().post(new SensorStateBackInfo(sensorInfo, true, unite)); + } -// EventBus.getDefault().post(new DeviceStateEvent(sensorInfo, true)); - HDLLog.info("鍙戦�佷紶鎰熷櫒閫氱煡鏇存柊"); - EventBus.getDefault().post(new SensorStateBackInfo(sensorInfo, true, unite)); - break; - default: - HDLLog.info("handle state 娌℃湁鎵惧埌鍖归厤绫诲瀷"); - break; + break outter; + } } } -- Gitblit v1.8.0