panlili2024
2024-11-12 69afac92a320033297d71e901e3c5b65e690f0b2
HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLAppliances/HDLAirCondition/Parser/AirCtrlParser.java
@@ -1,6 +1,8 @@
package com.hdl.sdk.ttl.HDLAppliances.HDLAirCondition.Parser;
import android.util.Log;
import com.hdl.sdk.ttl.Config.Configuration;
import com.hdl.sdk.ttl.HDLAppliances.Config.HDLApConfig;
import com.hdl.sdk.ttl.HDLDeviceManger.Bean.AppliancesInfo;
@@ -127,15 +129,15 @@
            byte[] airBytes = null;
            outter:
            for (int i = 0; i < HDLDeviceManager.devicesDataList.size(); i++) {
                if (appliancesInfo.getDeviceSubnetID() == HDLDeviceManager.devicesDataList.get(i).getSourceSubnetID()
                        && appliancesInfo.getDeviceDeviceID() == HDLDeviceManager.devicesDataList.get(i).getSourceDeviceID()) {
                if (appliancesInfo.getDeviceSubnetID() == HDLDeviceManager.devicesDataList.get(i).getDeviceSubnetID()
                        && appliancesInfo.getDeviceDeviceID() == HDLDeviceManager.devicesDataList.get(i).getDeviceDeviceID()) {
                    for (int j = 0; j < HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().size(); j++) {
                        if (HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getBigType() == Configuration.AIR_BIG_TYPE
                                && HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getDeviceType() != HDLApConfig.TYPE_AC_PANEL
                                && appliancesInfo.getChannelNum() == HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getChannelNum()) {
                            newInfo = HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j);
                            if (newInfo.getArrCurState() == null) {
                                newInfo.setArrCurState(new byte[13]);
                                newInfo.setArrCurState(new byte[19]);
                            }
                            airBytes = newInfo.getArrCurState();
                            break outter;
@@ -144,8 +146,8 @@
                    }
                }
            }
            byte[] addBytes = new byte[13];
            if (airBytes != null && airBytes.length >= 13) {
            byte[] addBytes = new byte[19];
            if (airBytes != null && airBytes.length >= 19) {
                System.arraycopy(airBytes, 0, addBytes, 0, airBytes.length);
                addBytes[0] = (byte) newInfo.getChannelNum();
@@ -195,19 +197,19 @@
                        addBytes[10] = (byte) state;
                        break;
                }
            }else {
            } else {
                addBytes[0] = (byte) newInfo.getChannelNum();
                addBytes[1] = 0;
                addBytes[2] = (byte)28;
                addBytes[3] = (byte)28;
                addBytes[4] = (byte)28;
                addBytes[5] = (byte)28;
                addBytes[6] = (byte)28;
                addBytes[2] = (byte) 28;
                addBytes[3] = (byte) 28;
                addBytes[4] = (byte) 28;
                addBytes[5] = (byte) 28;
                addBytes[6] = (byte) 28;
                addBytes[7] = 0;
                addBytes[8] = 1;
                addBytes[9] = 0;
                addBytes[10] = 0;
                addBytes[11] = (byte)28;
                addBytes[11] = (byte) 28;
                addBytes[12] = 0;
                switch (type) {
                    case airSwich://设置开关状态
@@ -266,183 +268,215 @@
    }
//    public static byte[] getRcuAirAddByte(AppliancesInfo I,int type, int arg2){
//        byte[] addBytes = new byte[9];
//        addBytes[4] = 1;
//        byte[] curAirInfo = I.getArrCurState();
//        switch (I.getChannelNum()){
//            case 1:
//                curAirInfo = HDLDeviceManager.air1Info;
//                break;
//            case 2:
//                curAirInfo = HDLDeviceManager.air2Info;
//                break;
//            case 3:
//                curAirInfo = HDLDeviceManager.air3Info;
//                break;
//            case 4:
//                curAirInfo = HDLDeviceManager.air4Info;
//                break;
//        }
//
//        byte airSwitch = curAirInfo[0];
//        byte aircurMode = curAirInfo[1];
//        byte airTem = curAirInfo[2];
//        byte aircurSpeed = curAirInfo[3];
//        byte aircurTem = curAirInfo[4];
//        byte airBAIFENG = curAirInfo[5];
//
//        addBytes[0] = (byte) I.getChannelNum();
//        addBytes[1] = airSwitch;
//        switch (aircurMode){
//            case 0:
//                addBytes[2] = airTem;
//                break;
//            case 1:
//                addBytes[5] = airTem;
//                break;
//            case 2:
//                break;
//            case 3:
//                addBytes[6] = airTem;
//                break;
//        }
//        addBytes[3] = (byte) ((aircurMode << 4) | aircurSpeed);
//        addBytes[4] = 1;
//        addBytes[8] = airBAIFENG;
//        switch (type){
//            case airSwich:
//                if(arg2 == airOff){
//                    addBytes[1] = 0;
//                }else if(arg2 == airOn){
//                    addBytes[1] = 1;
//                }
//                break;
//            case refTem:
//                addBytes[2] = (byte) arg2;
//                addBytes[5] = (byte) arg2;
//                addBytes[6] = (byte) arg2;
//                addBytes[7] = (byte) arg2;
//                break;
//            case airSpeed :
//                int modifyLow;
//                int height = ((addBytes[3] & 0xf0) >> 4);//获取高4位
//                switch (arg2){
//                    case airSpeedAuto:
//                        modifyLow = 0;
//                        addBytes[3] = (byte)((height<<4)|modifyLow);
//                        break;
//                    case airSpeedHigh:
//                        modifyLow = 1;
//                        addBytes[3] = (byte)((height<<4)|modifyLow);
//                        break;
//                    case airSpeedMid:
//                        modifyLow = 2;
//                        addBytes[3] = (byte)((height<<4)|modifyLow);
//                        break;
//                    case airSpeedLow:
//                        modifyLow = 3;
//                        addBytes[3] = (byte)((height<<4)|modifyLow);
//                        break;
//                    default:
//                        addBytes = new byte[]{fail};
//                        break;
//                }
//                break;
//            case airMode:
//                int modify;
//                int low = (addBytes[3] & 0x0f);//获取低4位
//                switch (arg2){
//                    case airModeRefTem:
//
//                        modify = 0;
//                        addBytes[3] = (byte)((modify<<4)|low);
//                        break;
//                    case airModeHeatTem:
//                        modify = 1;
//                        addBytes[3] = (byte)((modify<<4)|low);
//                        break;
//                    case airModeVen:
//                        modify = 2;
//                        addBytes[3] = (byte)((modify<<4)|low);
//                        break;
//                    case airModeAuto:
//                        modify = 3;
//                        addBytes[3] = (byte)((modify<<4)|low);
//                        break;
//                    case airModeDehum:
//                        modify = 4;
//                        addBytes[3] = (byte)((modify<<4)|low);
//                        break;
//                    default:
//                        addBytes = new byte[]{fail};
//                        break;
//                }
//                break;
//            case heatTem:
//                addBytes[2] = (byte) arg2;
//                addBytes[5] = (byte) arg2;
//                addBytes[6] = (byte) arg2;
//                addBytes[7] = (byte) arg2;
//                break;
//            case autoTem:
//                addBytes[2] = (byte) arg2;
//                addBytes[5] = (byte) arg2;
//                addBytes[6] = (byte) arg2;
//                addBytes[7] = (byte) arg2;
//                break;
//            case dehumTem:
//                addBytes[2] = (byte) arg2;
//                addBytes[5] = (byte) arg2;
//                addBytes[6] = (byte) arg2;
//                addBytes[7] = (byte) arg2;
//                break;
//            case upTem:
////                int height2 = ((addBytes[3] & 0xf0) >> 4);//获取高4位
////                switch (height2){
////                    case 0:
////                        addBytes[2] = (byte) (arg2 + (airTem & 0xFF));
////                        break;
////                    case 1:
////                        addBytes[5] = (byte) (arg2 + (airTem & 0xFF));
////                        break;
////                    case 3:
////                        addBytes[6] = (byte) (arg2 + (airTem & 0xFF));
////                        break;
////                    case 4:
////                        addBytes[7] = (byte) (arg2 + (airTem & 0xFF));
////                        break;
////                }
//                addBytes[2] = (byte) (arg2 + (airTem & 0xFF));
//                addBytes[5] = (byte) (arg2 + (airTem & 0xFF));
//                addBytes[6] = (byte) (arg2 + (airTem & 0xFF));
//                addBytes[7] = (byte) (arg2 + (airTem & 0xFF));
//                break;
//            case downTem:
////                int height3= ((addBytes[3] & 0xf0) >> 4);//获取高4位
////                switch (height3){
////                    case 0:
////                        addBytes[2] = (byte) ((airTem & 0xFF)-arg2 );
////                        break;
////                    case 1:
////                        addBytes[5] = (byte) ((airTem & 0xFF)-arg2 );
////                        break;
////                    case 3:
////                        addBytes[6] = (byte) ((airTem & 0xFF)-arg2 );
////                        break;
////                    case 4:
////                        addBytes[7] = (byte) ((airTem & 0xFF)-arg2 );
////                        break;
////                }
//                addBytes[2] = (byte) ((airTem & 0xFF)-arg2 );
//                addBytes[5] = (byte) ((airTem & 0xFF)-arg2 );
//                addBytes[6] = (byte) ((airTem & 0xFF)-arg2 );
//                addBytes[7] = (byte) ((airTem & 0xFF)-arg2 );
//                break;
//            default:
//                addBytes = new byte[]{fail};
//                break;
//        }
//        return addBytes;
//    }
}
    public static byte[] getAirTechAddByte(AppliancesInfo appliancesInfo, int type, int state) {
        try {
            AppliancesInfo newInfo = null;
            byte[] airBytes = null;
            outter:
            for (int i = 0; i < HDLDeviceManager.devicesDataList.size(); i++) {
                if (appliancesInfo.getDeviceSubnetID() == HDLDeviceManager.devicesDataList.get(i).getDeviceSubnetID()
                        && appliancesInfo.getDeviceDeviceID() == HDLDeviceManager.devicesDataList.get(i).getDeviceDeviceID()) {
                    for (int j = 0; j < HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().size(); j++) {
                        if (HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getBigType() == Configuration.AIR_BIG_TYPE
                                && (HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getDeviceType() == HDLApConfig.TYPE_AC_TECHSYS
                                || HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getDeviceType() == HDLApConfig.TYPE_AC_KNXTECHSYS)
                                && appliancesInfo.getChannelNum() == HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getChannelNum()) {
                            newInfo = HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j);
                            if (newInfo.getArrCurState() == null) {
                                newInfo.setArrCurState(new byte[19]);
                            }
                            airBytes = newInfo.getArrCurState();
                            break outter;
                        }
                    }
                }
            }
            byte[] addBytes = new byte[19];
            if (airBytes != null && airBytes.length >= 19) {
                System.arraycopy(airBytes, 0, addBytes, 0, airBytes.length);
                addBytes[0] = (byte) newInfo.getChannelNum();
                switch (type) {
                    case airSwich://设置开关状态
                        if (state == airOff) {
                            addBytes[8] = 0;
                        } else {
                            addBytes[8] = 1;
                        }
                        break;
                    case refTem:
                    case heatTem:
                    case autoTem:
                    case dehumTem://设置温度
                        addBytes[8] = 1;
                        addBytes[3] = (byte) state;
                        addBytes[4] = (byte) state;
                        addBytes[5] = (byte) state;
                        addBytes[6] = (byte) state;
                        addBytes[11] = (byte) state;
                        break;
                    case upTem://升温
                        addBytes[8] = 1;
                        addBytes[3] = (byte) ((airBytes[2] & 0xff) + state);
                        addBytes[4] = (byte) ((airBytes[2] & 0xff) + state);
                        addBytes[5] = (byte) ((airBytes[2] & 0xff) + state);
                        addBytes[6] = (byte) ((airBytes[2] & 0xff) + state);
                        addBytes[11] = (byte) ((airBytes[2] & 0xff) + state);
                        break;
                    case downTem://降温
                        addBytes[8] = 1;
                        addBytes[3] = (byte) ((airBytes[2] & 0xff) - state);
                        addBytes[4] = (byte) ((airBytes[2] & 0xff) - state);
                        addBytes[5] = (byte) ((airBytes[2] & 0xff) - state);
                        addBytes[6] = (byte) ((airBytes[2] & 0xff) - state);
                        addBytes[11] = (byte) ((airBytes[2] & 0xff) - state);
                        break;
                    case airMode://设置空调模式
                        addBytes[8] = 1;
                        addBytes[7] = (byte) (state * 16 + (airBytes[3] & 0xff));
                        addBytes[9] = (byte) state;
                        break;
                    case airSpeed://设置风速
                        addBytes[8] = 1;
                        addBytes[7] = (byte) ((airBytes[1] & 0xff) * 16 + state);
                        addBytes[10] = (byte) state;
                        break;
                }
            } else {
                addBytes[0] = (byte) newInfo.getChannelNum();
                addBytes[1] = 0;
                addBytes[2] = (byte) 28;
                addBytes[3] = (byte) 28;
                addBytes[4] = (byte) 28;
                addBytes[5] = (byte) 28;
                addBytes[6] = (byte) 28;
                addBytes[7] = 0;
                addBytes[8] = 1;
                addBytes[9] = 0;
                addBytes[10] = 0;
                addBytes[11] = (byte) 28;
                addBytes[12] = 0;
                switch (type) {
                    case airSwich://设置开关状态
                        if (state == airOff) {
                            addBytes[8] = 0;
                        } else {
                            addBytes[8] = 1;
                        }
                        break;
                    case refTem:
                    case heatTem:
                    case autoTem:
                    case dehumTem://设置温度
                        addBytes[8] = 1;
                        addBytes[3] = (byte) state;
                        addBytes[4] = (byte) state;
                        addBytes[5] = (byte) state;
                        addBytes[6] = (byte) state;
                        addBytes[11] = (byte) state;
                        break;
                    case upTem://升温
                        addBytes[8] = 1;
                        addBytes[3] = (byte) (28 + state);
                        addBytes[4] = (byte) (28 + state);
                        addBytes[5] = (byte) (28 + state);
                        addBytes[6] = (byte) (28 + state);
                        addBytes[11] = (byte) (28 + state);
                        break;
                    case downTem://降温
                        addBytes[8] = 1;
                        addBytes[3] = (byte) (28 - state);
                        addBytes[4] = (byte) (28 - state);
                        addBytes[5] = (byte) (28 - state);
                        addBytes[6] = (byte) (28 - state);
                        addBytes[11] = (byte) (28 - state);
                        break;
                    case airMode://设置空调模式
                        addBytes[8] = 1;
                        addBytes[7] = (byte) (state * 16);
                        addBytes[9] = (byte) state;
                        break;
                    case airSpeed://设置风速
                        addBytes[8] = 1;
                        addBytes[7] = (byte) (state);
                        addBytes[10] = (byte) state;
                        break;
                }
            }
            return addBytes;
        } catch (Exception e) {
            e.printStackTrace();
            return new byte[]{fail};
        }
    }
    public static byte[] getAirKNXTechAddByte(AppliancesInfo appliancesInfo, int type, float temp) {
        try {
            AppliancesInfo newInfo = null;
            byte[] airBytes = null;
            outter:
            for (int i = 0; i < HDLDeviceManager.devicesDataList.size(); i++) {
                if (appliancesInfo.getDeviceSubnetID() == HDLDeviceManager.devicesDataList.get(i).getDeviceSubnetID()
                        && appliancesInfo.getDeviceDeviceID() == HDLDeviceManager.devicesDataList.get(i).getDeviceDeviceID()) {
                    for (int j = 0; j < HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().size(); j++) {
                        if (HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getBigType() == Configuration.AIR_BIG_TYPE
                                && HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getDeviceType() == HDLApConfig.TYPE_AC_KNXTECHSYS
                                && appliancesInfo.getChannelNum() == HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getChannelNum()) {
                            newInfo = HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j);
                            if (newInfo.getArrCurState() == null) {
                                newInfo.setArrCurState(new byte[19]);
                            }
                            airBytes = newInfo.getArrCurState();
                            break outter;
                        }
                    }
                }
            }
            byte[] addBytes = new byte[19];
            if (airBytes != null && airBytes.length >= 19) {
                System.arraycopy(airBytes, 0, addBytes, 0, airBytes.length);
                addBytes[0] = (byte) newInfo.getChannelNum();
                Log.d("panlili", "---temp=" + temp);
                String tempStr = String.valueOf(temp).trim();
                String[] strByte = tempStr.split("\\.");
                int tempInt = Integer.parseInt(strByte[0]);
                int tempFloat = Integer.parseInt(strByte[1]);
                switch (type) {
                    case refTem:
                    case heatTem:
                    case autoTem:
                    case dehumTem://设置温度
                        addBytes[8] = 1;
                        addBytes[3] = (byte) tempInt;
                        addBytes[4] = (byte) tempInt;
                        addBytes[5] = (byte) tempInt;
                        addBytes[6] = (byte) tempInt;
                        addBytes[11] = (byte) tempInt;
                        addBytes[14] = (byte) tempFloat;
                        addBytes[15] = (byte) tempFloat;
                        addBytes[16] = (byte) tempFloat;
                        addBytes[17] = (byte) tempFloat;
                        addBytes[18] = (byte) tempFloat;
                        break;
                }
            }
            return addBytes;
        } catch (Exception e) {
            e.printStackTrace();
            return new byte[]{fail};
        }
    }
}