| | |
| | | */ |
| | | public static boolean parse(byte[] addBytes, DevicesData devicesData, String parentRemarks) { |
| | | boolean isExitData = false; |
| | | int residue = addBytes.length - 22; |
| | | int residue = addBytes.length - 8; |
| | | int sumCount = residue / 3;//记录总共有多少种设备 |
| | | List<AppliancesInfo> appliancesInfoList = new ArrayList<>(); |
| | | if (sumCount == 0) { |
| | |
| | | appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE); |
| | | appliancesInfoList.add(appliancesInfo); |
| | | } |
| | | // HDLLog.I("sumCount" + sumCount); |
| | | // 00008 2023年11月29日16:58:01:800: 0F FE 58 01 A8 F5 48 64 00 0F 18 00 00 3E A0 |
| | | // 00009 2023年11月29日16:58:01:816: 16 64 00 11 F7 F5 49 FE 58 0F 18 00 03 00 01 2A 60 07 03 01 35 59 |
| | | // 00010 2023年11月29日16:58:01:832: 19 64 00 11 F7 F5 49 FE 58 0F 18 00 03 00 02 64 80 05 09 01 0E 04 01 FE 35 |
| | | // 00011 2023年11月29日16:58:01:848: 16 64 00 11 F7 F5 49 FE 58 0F 18 00 03 00 03 64 0A 01 01 04 D5 C7 |
| | | int curCount = 0;//循环遍历所有设备次数 |
| | | while (curCount < sumCount) { |
| | | int bigType = addBytes[21 + (2 * curCount) + (curCount + 1)] & 0xFF; |
| | | int littleType = addBytes[21 + (2 * curCount) + (curCount + 2)] & 0xFF; |
| | | int channelNum = addBytes[21 + (2 * curCount) + (curCount + 3)] & 0xFF; |
| | | |
| | | int subnetID = addBytes[6] & 0xFF; |
| | | int deviceID = addBytes[7] & 0xFF; |
| | | devicesData.setDeviceSubnetID(subnetID); |
| | | devicesData.setDeviceDeviceID(deviceID); |
| | | |
| | | int bigType = addBytes[7 + (2 * curCount) + (curCount + 1)] & 0xFF; |
| | | int littleType = addBytes[7 + (2 * curCount) + (curCount + 2)] & 0xFF; |
| | | //通道总数 |
| | | int channelNum = addBytes[7 + (2 * curCount) + (curCount + 3)] & 0xFF; |
| | | |
| | | curCount++; |
| | | int curChannelNum = 0; |
| | | while (curChannelNum < channelNum) { |
| | | curChannelNum++; |
| | | if (isWantData(bigType, littleType)) { |
| | | AppliancesInfo appliancesInfo = new AppliancesInfo(); |
| | | appliancesInfo.setDeviceSubnetID(subnetID); |
| | | appliancesInfo.setDeviceDeviceID(deviceID); |
| | | |
| | | /**根据类别,赋值操作码等一些重要信息*/ |
| | | switch (bigType) { |
| | | case Configuration.LIGTH_BIG_TYPE: |
| | |
| | | parseGeothermalData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, ""); |
| | | break; |
| | | case Configuration.DOOR_MACHINE_BIG_TYPE://门锁 |
| | | parseDoorMachineData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");//门锁的通道号需要-1 |
| | | parseDoorMachineData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, ""); |
| | | break; |
| | | default: |
| | | // appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE); |
| | |
| | | * @param littleType |
| | | * @return SDK目前支持的大类:小类 |
| | | * 灯光类1:0 ,1,9,10 |
| | | * 窗帘类2:0,1,2 |
| | | * 窗帘类2:0,1,2,6 |
| | | * 传感器5:0~24 |
| | | * 空调类7:0,3 |
| | | * 背景音乐功能9:0 |
| | |
| | | case Configuration.CURTAIN_BIG_TYPE: |
| | | switch (littleType) { |
| | | case 0: |
| | | isWant = true; |
| | | break; |
| | | case 1: |
| | | isWant = true; |
| | | break; |
| | | case 2: |
| | | case 6: |
| | | isWant = true; |
| | | break; |
| | | default: |
| | |
| | | case 0: |
| | | case 3: |
| | | case 100: |
| | | case 101: |
| | | isWant = true; |
| | | break; |
| | | default: |
| | |
| | | break; |
| | | } |
| | | break; |
| | | case Configuration.SENSOR_BIG_TYPE: //屏蔽传感器大类 |
| | | // if (littleType >= 0 && littleType <= 27) { |
| | | // isWant = true; |
| | | // } else { |
| | | // isWant = false; |
| | | // } |
| | | |
| | | if (littleType == 1 || littleType == 9 || littleType == 11 || (littleType > 24 && littleType <= 27)) {//2019-11-5 改为只支持6种感应器 |
| | | case Configuration.SENSOR_BIG_TYPE: |
| | | if (littleType == 1 || littleType == 2 || littleType == 3 |
| | | || (littleType > 4 && littleType <= 11) |
| | | || littleType == 20 || (littleType > 24 && littleType <= 27) |
| | | || littleType == 32) { |
| | | isWant = true; |
| | | } else { |
| | | isWant = false; |
| | |
| | | appliancesInfo.setStateCommand(Configuration.LIGHT_STATE_COMMAND); |
| | | appliancesInfo.setStateBackCommand(Configuration.LIGHT_STATE_BACK_COMMAND); |
| | | } |
| | | appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setSourceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setParentRemarks(parentRemarks); |
| | | // appliancesInfo.setPort(port); |
| | | // appliancesInfo.setIpAddress(ipAddress); |
| | |
| | | appliancesInfo.setDeviceName("窗帘模块"); |
| | | appliancesInfo.setDeviceType(HDLApConfig.TYPE_CURTAIN_MODULE); |
| | | break; |
| | | case 6: |
| | | appliancesInfo.setDeviceName("香格里拉帘电机"); |
| | | appliancesInfo.setDeviceType(HDLApConfig.TYPE_CURTAIN_SHANGRILA); |
| | | break; |
| | | default: |
| | | appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE); |
| | | break; |
| | |
| | | appliancesInfo.setCtrlBackCommand(Configuration.CURTAIN_CTRL_BACK_COMMAND); |
| | | appliancesInfo.setStateCommand(Configuration.CURTAIN_STATE_COMMAND); |
| | | appliancesInfo.setStateBackCommand(Configuration.CURTAIN_STATE_BACK_COMMAND); |
| | | appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setSourceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setParentRemarks(parentRemarks); |
| | | // appliancesInfo.setPort(port); |
| | | // appliancesInfo.setIpAddress(ipAddress); |
| | | } |
| | | } |
| | | |
| | |
| | | appliancesInfo.setDeviceName("科技系统"); |
| | | appliancesInfo.setDeviceType(HDLApConfig.TYPE_AC_TECHSYS); |
| | | break; |
| | | case 101: |
| | | appliancesInfo.setDeviceName("KNX科技系统"); |
| | | appliancesInfo.setDeviceType(HDLApConfig.TYPE_AC_KNXTECHSYS); |
| | | break; |
| | | default: |
| | | appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE); |
| | | break; |
| | |
| | | appliancesInfo.setChannelNum(channelNum); |
| | | appliancesInfo.setBigType(Configuration.AIR_BIG_TYPE); |
| | | appliancesInfo.setLittleType(littleType); |
| | | appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setSourceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setParentRemarks(parentRemarks); |
| | | // appliancesInfo.setPort(port); |
| | | // appliancesInfo.setIpAddress(ipAddress); |
| | | if (littleType == 0 || littleType == 100) {//科技系统走0x193A和0x1938 |
| | | if (littleType == 0 || littleType == 100 || littleType == 101) {//科技系统走0x193A和0x1938 |
| | | appliancesInfo.setCtrlCommand(Configuration.AIR_HVAC_CTRL_COMMAND); |
| | | appliancesInfo.setCtrlBackCommand(Configuration.AIR_HVAC_CTRL_BACK_COMMAND); |
| | | appliancesInfo.setStateCommand(Configuration.AIR_HVAC_STATE_COMMAND); |
| | |
| | | appliancesInfo.setCtrlBackCommand(Configuration.AUDIO_CTRL_READ_BACK_COMMAND); |
| | | appliancesInfo.setStateCommand(Configuration.AUDIO_MenuPlay_INSTRUCTION_COMMAND); |
| | | appliancesInfo.setStateBackCommand(Configuration.AUDIO_MenuPlay_INSTRUCTION_BACK_COMMAND); |
| | | appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setSourceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setParentRemarks(parentRemarks); |
| | | // appliancesInfo.setPort(port); |
| | | // appliancesInfo.setIpAddress(ipAddress); |
| | | } |
| | | HDLLog.I("音乐模块:" + parentRemarks); |
| | | } |
| | |
| | | appliancesInfo.setCtrlBackCommand(Configuration.LOGIC_CTRL_BACK_COMMAND); |
| | | appliancesInfo.setStateCommand(Configuration.LOGIC_STATE_COMMAND); |
| | | appliancesInfo.setStateBackCommand(Configuration.LOGIC_STATE_BACK_COMMAND); |
| | | appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setSourceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setParentRemarks(parentRemarks); |
| | | // appliancesInfo.setPort(port); |
| | | // appliancesInfo.setIpAddress(ipAddress); |
| | | |
| | | |
| | | } |
| | | } |
| | |
| | | appliancesInfo.setCtrlBackCommand(Configuration.LOGIC_CTRL_BACK_COMMAND); |
| | | appliancesInfo.setStateCommand(Configuration.LOGIC_STATE_COMMAND); |
| | | appliancesInfo.setStateBackCommand(Configuration.LOGIC_STATE_BACK_COMMAND); |
| | | appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setSourceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setParentRemarks(parentRemarks); |
| | | // appliancesInfo.setPort(port); |
| | | // appliancesInfo.setIpAddress(ipAddress); |
| | | |
| | | |
| | | } |
| | | } |
| | |
| | | appliancesInfo.setChannelNum(channelNum); |
| | | appliancesInfo.setBigType(Configuration.SECURITY_BIG_TYPE); |
| | | appliancesInfo.setLittleType(littleType); |
| | | appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setSourceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setParentRemarks(parentRemarks); |
| | | // appliancesInfo.setPort(port); |
| | | // appliancesInfo.setIpAddress(ipAddress); |
| | | appliancesInfo.setCtrlCommand(Configuration.SECURITY_ARMING_CTRL_COMMAND);//布防 |
| | | appliancesInfo.setCtrlBackCommand(Configuration.SECURITY_ARMING_CTRL_BACK_COMMAND);//布防设置反馈 |
| | | appliancesInfo.setStateCommand(Configuration.SECURITY_STATE_COMMAND);//读取安防设置 |
| | |
| | | appliancesInfo.setDeviceName("传感器 紧急按钮"); |
| | | appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_EMERGENCY_BUTTON); |
| | | break; |
| | | case 32: |
| | | appliancesInfo.setDeviceName("传感器 PM10"); |
| | | appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_PM_10); |
| | | break; |
| | | |
| | | default: |
| | | appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE); |
| | |
| | | appliancesInfo.setBigType(Configuration.SENSOR_BIG_TYPE); |
| | | appliancesInfo.setLittleType(littleType); |
| | | |
| | | appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setSourceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setParentRemarks(parentRemarks); |
| | | |
| | | appliancesInfo.setStateCommand(Configuration.DRY_CONTACT_STATE_COMMAND); |
| | | appliancesInfo.setStateBackCommand(Configuration.DRY_CONTACT_STATE_BACK_COMMAND); |
| | | |
| | | appliancesInfo.setStateCommand(Configuration.SENSOR_STATE_COMMAND); |
| | | appliancesInfo.setStateBackCommand(Configuration.SENSOR_STATE_BACK_COMMAND); |
| | | } |
| | | |
| | | } |
| | |
| | | appliancesInfo.setChannelNum(channelNum); |
| | | appliancesInfo.setBigType(Configuration.FRESH_AIR_BIG_TYPE); |
| | | appliancesInfo.setLittleType(littleType); |
| | | appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setSourceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setParentRemarks(parentRemarks); |
| | | } |
| | | } |
| | |
| | | appliancesInfo.setChannelNum(channelNum); |
| | | appliancesInfo.setBigType(Configuration.GEOTHERMAL_BIG_TYPE); |
| | | appliancesInfo.setLittleType(littleType); |
| | | appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setSourceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setParentRemarks(parentRemarks); |
| | | // appliancesInfo.setPort(port); |
| | | // appliancesInfo.setIpAddress(ipAddress); |
| | | |
| | | appliancesInfo.setCtrlCommand(Configuration.GEOTHERMAL_MODULE_CTRL_COMMAND); |
| | | appliancesInfo.setCtrlBackCommand(Configuration.GEOTHERMAL_MODULE_CTRL_BACK_COMMAND); |
| | |
| | | appliancesInfo.setChannelNum(channelNum); |
| | | appliancesInfo.setBigType(Configuration.DOOR_MACHINE_BIG_TYPE); |
| | | appliancesInfo.setLittleType(littleType); |
| | | appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setSourceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setParentRemarks(parentRemarks); |
| | | |
| | | appliancesInfo.setCtrlCommand(Configuration.DOOR_MACHINE_MODULE_CTRL_COMMAND); |
| | |
| | | appliancesInfo.setChannelNum(channelNum); |
| | | appliancesInfo.setBigType(Configuration.COMMON_SWITCH_BIG_TYPE); |
| | | appliancesInfo.setLittleType(littleType); |
| | | appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID()); |
| | | appliancesInfo.setSourceDeviceID(devicesData.getSourceDeviceID()); |
| | | appliancesInfo.setParentRemarks(parentRemarks); |
| | | |
| | | appliancesInfo.setCtrlCommand(Configuration.COMMON_SWITCH_CTRL_COMMAND);//布防 |