From 69afac92a320033297d71e901e3c5b65e690f0b2 Mon Sep 17 00:00:00 2001 From: panlili2024 <14743743+panlili2024@user.noreply.gitee.com> Date: 星期二, 12 十一月 2024 11:42:15 +0800 Subject: [PATCH] 增加knx科技系统温度0.5支持 --- app/src/main/java/com/hdl/sdk/ttl_sdk/HDLApplication.java | 2 HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLAppliances/HDLAirCondition/AirTechSysBackInfo.java | 63 ++++++++++++++- .idea/deploymentTargetSelector.xml | 4 HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLCommand.java | 44 +++++++++++ HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLSerialPortCore.java | 2 HDL_TTLSDK485/build.gradle | 4 HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLAppliances/HDLAirCondition/Parser/AirCtrlParser.java | 68 ++++++++++++++++ README.md | 21 ++++- app/src/main/java/com/hdl/sdk/ttl_sdk/activity/CtrlAirKNXTechSysActivity.java | 27 ++++-- 9 files changed, 209 insertions(+), 26 deletions(-) diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index 72ad84c..d16ad6f 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -4,10 +4,10 @@ <selectionStates> <SelectionState runConfigName="app"> <option name="selectionMode" value="DROPDOWN" /> - <DropdownSelection timestamp="2024-11-11T02:28:48.057319600Z"> + <DropdownSelection timestamp="2024-11-12T03:27:29.888475400Z"> <Target type="DEFAULT_BOOT"> <handle> - <DeviceId pluginId="Default" identifier="serial=192.168.1.113:5555;connection=edc26430" /> + <DeviceId pluginId="Default" identifier="serial=192.168.1.103:5555;connection=3ecbcada" /> </handle> </Target> </DropdownSelection> diff --git a/HDL_TTLSDK485/build.gradle b/HDL_TTLSDK485/build.gradle index 905b95b..d48ec72 100644 --- a/HDL_TTLSDK485/build.gradle +++ b/HDL_TTLSDK485/build.gradle @@ -7,8 +7,8 @@ defaultConfig { minSdkVersion 17 targetSdkVersion 30 - versionCode 7 - versionName "1.2.4" + versionCode 8 + versionName "1.2.5" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" ndk { diff --git a/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLAppliances/HDLAirCondition/AirTechSysBackInfo.java b/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLAppliances/HDLAirCondition/AirTechSysBackInfo.java index c6b0aab..ca8446d 100644 --- a/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLAppliances/HDLAirCondition/AirTechSysBackInfo.java +++ b/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLAppliances/HDLAirCondition/AirTechSysBackInfo.java @@ -1,7 +1,5 @@ package com.hdl.sdk.ttl.HDLAppliances.HDLAirCondition; -import android.util.Log; - import com.hdl.sdk.ttl.HDLDeviceManger.Bean.AppliancesInfo; import java.io.Serializable; @@ -18,8 +16,19 @@ private String indoorHumidity;//瀹ゅ唴婀垮害 0-100 private int indoorTempInt;//瀹ゅ唴娓╁害鐐规暣鏁伴儴鍒� private int indoorTempFloat;//瀹ゅ唴娓╁害鐐瑰皬鏁伴儴鍒� - private int refTemp;//鍒跺喎娓╁害鐐� 0-84 - private int heatTemp;//鍒剁儹娓╁害鐐� 0-84 + + private String coldTemp;//鍒跺喎娓╁害鐐�,鏀寔灏忔暟鐨勭敤杩欎釜 + private int refTemp;//鍒跺喎娓╁害鐐规暣鏁伴儴鍒� 0-84 + private int refTempFloat;//鍒跺喎娓╁害鐐瑰皬鏁伴儴鍒� + + private String hotTemp;//鍒跺喎娓╁害鐐癸紝鏀寔灏忔暟鐨勭敤杩欎釜 + private int heatTemp;//鍒剁儹娓╁害鐐规暣鏁伴儴鍒� 0-84 + private int heatTempFloat;//鍒剁儹娓╁害鐐瑰皬鏁伴儴鍒� + + private String setTemp;//鍒跺喎娓╁害鐐� 0-84 + private int setTempInt;//鍒剁儹娓╁害鐐规暣鏁伴儴鍒� 0-84 + private int setTempFloat;//鍒剁儹娓╁害鐐瑰皬鏁伴儴鍒� + private int airMode;//绌鸿皟妯″紡0 = 鍒跺喎, 1 = 鍒剁儹 private byte[] curState;//鎺у埗鍥為淇℃伅 @@ -34,7 +43,27 @@ if (this.curState == null) return; - if (this.curState.length >= 14) { + if (this.curState.length >= 19) { + this.channelNum = this.curState[0] & 0xFF; + this.indoorTempInt = this.curState[2] & 0xFF; + this.refTemp = this.curState[3] & 0xFF;//鍒跺喎娓╁害鐐� 0-84 + this.heatTemp = this.curState[4] & 0xFF;//鍒剁儹娓╁害鐐� 0-84 + this.isOn = this.curState[8] & 0xFF;//鍙彇浣�4浣� + this.airMode = this.curState[9] & 0xFF; + this.setTempInt = this.curState[11] & 0xFF; + this.indoorTempFloat = this.curState[13] & 0xFF; + this.indoorTemp = indoorTempInt + "." + indoorTempFloat; + + this.refTempFloat = this.curState[14] & 0xFF; + this.coldTemp = refTemp + "." + refTempFloat; + + this.heatTempFloat = this.curState[15] & 0xFF; + this.hotTemp = heatTemp + "." + heatTempFloat; + + this.setTempFloat = this.curState[18] & 0xFF; + this.setTemp = setTempInt + "." + setTempFloat; + + } else if (this.curState.length >= 14) { this.channelNum = this.curState[0] & 0xFF; this.indoorTempInt = this.curState[2] & 0xFF; this.refTemp = this.curState[3] & 0xFF;//鍒跺喎娓╁害鐐� 0-84 @@ -118,6 +147,30 @@ this.airMode = airMode; } + public String getColdTemp() { + return coldTemp; + } + + public void setColdTemp(String coldTemp) { + this.coldTemp = coldTemp; + } + + public String getHotTemp() { + return hotTemp; + } + + public void setHotTemp(String hotTemp) { + this.hotTemp = hotTemp; + } + + public String getSetTemp() { + return setTemp; + } + + public void setSetTemp(String setTemp) { + this.setTemp = setTemp; + } + public byte[] getCurState() { return curState; } diff --git a/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLAppliances/HDLAirCondition/Parser/AirCtrlParser.java b/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLAppliances/HDLAirCondition/Parser/AirCtrlParser.java index 6b0ec25..bada758 100644 --- a/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLAppliances/HDLAirCondition/Parser/AirCtrlParser.java +++ b/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLAppliances/HDLAirCondition/Parser/AirCtrlParser.java @@ -413,4 +413,70 @@ } } -} + + 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}; + } + + } +} \ No newline at end of file diff --git a/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLCommand.java b/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLCommand.java index bbe4f12..9e7d2fc 100644 --- a/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLCommand.java +++ b/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLCommand.java @@ -7,6 +7,7 @@ import com.hdl.sdk.ttl.Config.MCUConstants; import com.hdl.sdk.ttl.HDLAppliances.Config.HDLApConfig; import com.hdl.sdk.ttl.HDLAppliances.HDLAirCondition.AirCtrlBackInfo; +import com.hdl.sdk.ttl.HDLAppliances.HDLAirCondition.AirTechSysBackInfo; import com.hdl.sdk.ttl.HDLAppliances.HDLAirCondition.Parser.AirCtrlParser; import com.hdl.sdk.ttl.HDLAppliances.HDLAudio.HDLAudio; import com.hdl.sdk.ttl.HDLAppliances.HDLCommonSwitch.CommonSwitchBackInfo; @@ -32,6 +33,7 @@ import com.hdl.sdk.ttl.HDLDeviceManger.Bean.ScenesData; import com.hdl.sdk.ttl.HDLDeviceManger.Bean.SendDatas; import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.AirFeedBackEvent; +import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.AirTechSysFeedBackEvent; import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.ColourLightFeedBackEvent; import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.CommonSwitchCtrlBackEvent; import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.CurtainFeedBackEvent; @@ -411,6 +413,47 @@ AirCtrlBackInfo airCtrlBackInfo = new AirCtrlBackInfo(); airCtrlBackInfo.setAppliancesInfo(info); EventBus.getDefault().post(new AirFeedBackEvent(airCtrlBackInfo, false)); + } + } + }, mRequestTimeout); + + + } else { + HDLLog.I("绌鸿皟璁惧鎺у埗涓嶅湪鑼冨洿鍐�" + + " LittleType = " + info.getLittleType() + + " BigType = " + info.getBigType() + ); + } + } + + /** + * 鎺у埗绌鸿皟娓╁害锛堟俯搴︿负娴偣鍨嬶級 + * + * @param info + * @param type + * @param temp 娓╁害 + */ + public static void airCtrlTemp(final AppliancesInfo info, int type, float temp) { + HDLDeviceManager.setDeviceCtrlSuccessStateWithInfo(info, false); + if (acCtrlFailTimer != null) { + acCtrlFailTimer.cancel(); + acCtrlFailTimer = null; + } + if (info.getBigType() == Configuration.AIR_BIG_TYPE) { + if (info.getDeviceType() == HDLApConfig.TYPE_AC_KNXTECHSYS) { + byte[] airbytes = AirCtrlParser.getAirKNXTechAddByte(info, type, temp); + if (airbytes != null) { + addSendData(info, airbytes, Configuration.CONTROL); + } + } + + acCtrlFailTimer = new Timer(); + acCtrlFailTimer.schedule(new TimerTask() { + @Override + public void run() { + if (!HDLDeviceManager.getDeviceCtrlSuccessStateWithInfo(info)) { + AirTechSysBackInfo AirTechSysBackInfo = new AirTechSysBackInfo(info); + EventBus.getDefault().post(new AirTechSysFeedBackEvent(AirTechSysBackInfo, false)); } } }, mRequestTimeout); @@ -1880,6 +1923,7 @@ Crc sendDatas = new Crc(command, subnetID, deviceID, addBytes); HDLSerialPortCore.sendData(sendDatas); } else { + SendDatas.AddSendData(command, subnetID, deviceID, addBytes); } } diff --git a/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLSerialPortCore.java b/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLSerialPortCore.java index bcf87ad..3b5acc8 100644 --- a/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLSerialPortCore.java +++ b/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLSerialPortCore.java @@ -26,7 +26,7 @@ */ public class HDLSerialPortCore { //涓插彛璁惧璺緞鍚� - private static String mPathname = "/dev/ttyS9"; + private static String mPathname = "/dev/ttyS1"; //娉㈢壒鐜� private static int mBaudrate = 115200; diff --git a/README.md b/README.md index f54660d..3f5b3de 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,19 @@ -## Android_HDL_SDK_TTL485 +## Android_HDL_SDK_TTL -HDL TTL485 Android SDK Copyright (c) 2019 HDL Inc. +HDL TTL Android SDK Copyright (c) 2019 HDL Inc. -榄旈暅SDK椤圭洰 +485 BUS SDK椤圭洰 -2020-03-25 -1.鍘绘帀MCU灏忔澘鍗忚 +2024-5-31 +V1.2.4 +1.SDK鏂板KNX绉戞妧绯荤粺鏀寔锛屾俯搴︽帶鍒舵敮鎸佸皬鏁帮紝姝ヨ繘鏀寔0.5 +1锛夎缃俯搴︽樉绀猴細 +鏍规嵁鍒跺喎/鍒剁儹妯″紡锛屽彇getColdTemp()/getHotTemp() +鏍规嵁璁剧疆娓╁害锛屽彇getSetTemp() +2.璁剧疆娓╁害锛� +璋冪敤airCtrlTemp(info,type,temp)鏂规硶 + +2024-11-12 +V1.2.5 +1.淇敼鎼滅储璁惧澶囨敞鎸夌収index绱㈠紩 +2.浼樺寲鎼滅储璁惧娴佺▼ \ No newline at end of file diff --git a/app/src/main/java/com/hdl/sdk/ttl_sdk/HDLApplication.java b/app/src/main/java/com/hdl/sdk/ttl_sdk/HDLApplication.java index 728c877..e7ff760 100644 --- a/app/src/main/java/com/hdl/sdk/ttl_sdk/HDLApplication.java +++ b/app/src/main/java/com/hdl/sdk/ttl_sdk/HDLApplication.java @@ -9,7 +9,7 @@ */ public class HDLApplication extends Application { - public static final String HDL_UART_PATH = "/dev/ttyS9"; //涓插彛璁惧璺緞鍚� + public static final String HDL_UART_PATH = "/dev/ttyS1"; //涓插彛璁惧璺緞鍚� public static final int HDL_BAUDRATE = 115200; //娉㈢壒鐜� @Override diff --git a/app/src/main/java/com/hdl/sdk/ttl_sdk/activity/CtrlAirKNXTechSysActivity.java b/app/src/main/java/com/hdl/sdk/ttl_sdk/activity/CtrlAirKNXTechSysActivity.java index be0c4b1..813a698 100644 --- a/app/src/main/java/com/hdl/sdk/ttl_sdk/activity/CtrlAirKNXTechSysActivity.java +++ b/app/src/main/java/com/hdl/sdk/ttl_sdk/activity/CtrlAirKNXTechSysActivity.java @@ -138,9 +138,10 @@ showToast("璁剧疆鐨勬俯搴︿笉鑳戒负绌�"); return; } - int tempInt = Integer.parseInt(tempStr); + //2024.5.30淇敼锛屾俯搴︿慨鏀逛负娴偣鍨� + Float temp = Float.parseFloat(tempStr); - if (tempInt < 5 || tempInt > 35) { + if (temp < 5 || temp > 35) { showToast("娓╁害璁剧疆鑼冨洿涓猴細5~35鎽勬皬搴�(鈩�)"); return; } @@ -148,11 +149,11 @@ switch (airModeState) { case 0: //褰撳墠绌鸿皟妯″紡涓哄埗鍐� - HDLCommand.airCtrl(appliancesInfo, AirCtrlParser.refTem, tempInt);//鍒跺喎娓╁害 + HDLCommand.airCtrlTemp(appliancesInfo, AirCtrlParser.refTem, temp);//鍒跺喎娓╁害锛�2024.5.30淇敼锛屾俯搴︽帶鍒惰皟鐢╝irCtrlTemp鏂规硶 break; case 1: //褰撳墠绌鸿皟妯″紡涓哄埗鐑� - HDLCommand.airCtrl(appliancesInfo, AirCtrlParser.heatTem, tempInt);//鍒剁儹娓╁害 + HDLCommand.airCtrlTemp(appliancesInfo, AirCtrlParser.heatTem, temp);//鍒剁儹娓╁害锛�2024.5.30淇敼锛屾俯搴︽帶鍒惰皟鐢╝irCtrlTemp鏂规硶 break; } } @@ -173,9 +174,13 @@ stringState += "\n瀹ゅ唴娓╁害锛�" + mAirTechSysBackInfo.getIndoorTemp(); if (AirCtrlParser.airModeRefTem == mAirTechSysBackInfo.getAirMode()) { - stringState += "\n鍒跺喎妯″紡娓╁害锛�" + mAirTechSysBackInfo.getRefTemp(); + stringState += "\n鍒跺喎妯″紡娓╁害锛�" + mAirTechSysBackInfo.getColdTemp();//2024.5.30鏇存柊 } else if (AirCtrlParser.airModeHeatTem == mAirTechSysBackInfo.getAirMode()) { - stringState += "\n鍒剁儹妯″紡娓╁害锛�" + mAirTechSysBackInfo.getHeatTemp(); + stringState += "\n鍒剁儹妯″紡娓╁害锛�" + mAirTechSysBackInfo.getHotTemp();//2024.5.30鏇存柊 + } + + if (!TextUtils.isEmpty(mAirTechSysBackInfo.getSetTemp())){//2024.5.30鏇存柊 + stringState += "\n璁剧疆娓╁害锛�" + mAirTechSysBackInfo.getSetTemp(); } } else { @@ -244,9 +249,13 @@ message += "\n瀹ゅ唴娓╁害锛�" + mAirTechSysBackInfo.getIndoorTemp(); if (AirCtrlParser.airModeRefTem == mAirTechSysBackInfo.getAirMode()) { - message += "\n鍒跺喎妯″紡娓╁害锛�" + mAirTechSysBackInfo.getRefTemp(); + message += "\n鍒跺喎妯″紡娓╁害锛�" + mAirTechSysBackInfo.getColdTemp();//2024.5.30鏇存柊 } else if (AirCtrlParser.airModeHeatTem == mAirTechSysBackInfo.getAirMode()) { - message += "\n鍒剁儹妯″紡娓╁害锛�" + mAirTechSysBackInfo.getHeatTemp(); + message += "\n鍒剁儹妯″紡娓╁害锛�" + mAirTechSysBackInfo.getHotTemp();//2024.5.30鏇存柊 + } + + if (!TextUtils.isEmpty(mAirTechSysBackInfo.getSetTemp())){//2024.5.30鏇存柊 + message += "\n璁剧疆娓╁害锛�" + mAirTechSysBackInfo.getSetTemp(); } } else { @@ -276,7 +285,7 @@ } AirTechSysBackInfo mAirTechSysBackInfo = event.getAirTechSysBackInfo(); showAirTechSysBackInfo(mAirTechSysBackInfo); - if (!TextUtils.isEmpty(mAirTechSysBackInfo.getIndoorHumidity())){ + if (!TextUtils.isEmpty(mAirTechSysBackInfo.getIndoorHumidity())) { airHumidity.setText("瀹ゅ唴婀垮害锛�" + mAirTechSysBackInfo.getIndoorHumidity()); } } -- Gitblit v1.8.0