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