| | |
| | | case Configuration.ReadRemark://2021-01-05 000E搜索备注处理 |
| | | handleReadRemarkBackData(getDatas); |
| | | break; |
| | | case Configuration.READ_MAC_COMMAND://2021-01-07 F003读设备Mac |
| | | handleReadMacBackData(getDatas); |
| | | break; |
| | | // 控制设备 |
| | | case Configuration.LIGHT_CTRL_BACK_COMMAND: |
| | | case Configuration.CURTAIN_CTRL_BACK_COMMAND: |
| | |
| | | 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: |
| | |
| | | /** |
| | | * ReadRemark |
| | | * 搜索设备000E 回复处理 |
| | | * |
| | | * @param getDatas |
| | | */ |
| | | public static void handleReadRemarkBackData(UdpDataBean getDatas) { |
| | |
| | | addBytes, |
| | | getDatas.port, getDatas.ipAddress); |
| | | } |
| | | |
| | | /** |
| | | * READ MAC |
| | | * 读取MAC 回复处理 |
| | | * |
| | | * @param getDatas |
| | | */ |
| | | public static void handleReadMacBackData(UdpDataBean getDatas) { |
| | | //Mac地址8个byte |
| | | 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搜索数据 |
| | |
| | | // 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()) { |
| | |
| | | } |
| | | |
| | | 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); |
| | |
| | | |
| | | sensorInfo.setCurState(value); |
| | | |
| | | |
| | | String unite = ""; |
| | | boolean ifNeedPost = true; |
| | | switch (sensorInfo.getDeviceType()) { |
| | | case HDLApConfig.TYPE_SENSOR_DRY_CONTACT: |
| | | unite = ""; |
| | |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | } |