panlili2024
2024-09-19 071a8328823a2861f93ce556a4da3e4119cab1a3
HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Parser/DeviceParser.java
@@ -30,7 +30,7 @@
     */
    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) {
@@ -38,18 +38,32 @@
            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:
@@ -86,7 +100,7 @@
                            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);
@@ -123,7 +137,7 @@
     * @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
@@ -154,12 +168,9 @@
            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:
@@ -172,6 +183,7 @@
                    case 0:
                    case 3:
                    case 100:
                    case 101:
                        isWant = true;
                        break;
                    default:
@@ -195,14 +207,11 @@
                        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;
@@ -354,8 +363,8 @@
                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);
@@ -376,6 +385,10 @@
                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;
@@ -389,11 +402,9 @@
            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);
        }
    }
@@ -419,6 +430,10 @@
                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;
@@ -428,12 +443,10 @@
            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);
@@ -476,11 +489,9 @@
            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);
    }
@@ -504,12 +515,9 @@
            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);
        }
    }
@@ -533,12 +541,9 @@
            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);
        }
    }
@@ -573,11 +578,9 @@
            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);//读取安防设置
@@ -717,6 +720,10 @@
                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);
@@ -729,13 +736,12 @@
            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);
        }
    }
@@ -772,8 +778,8 @@
            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);
        }
    }
@@ -809,11 +815,9 @@
            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);
@@ -842,8 +846,8 @@
            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);
@@ -882,8 +886,8 @@
            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);//布防