diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 445738d..1cc04ea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,6 @@
-
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 445738d..1cc04ea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,6 @@
-
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index d5c9eea..2a8c6e9 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -189,10 +189,18 @@
}
"9" -> {//温度设置
-
+ val tempValue = parseObject[it] as Int
+ //转为刻度
+ temperatureSlider.currentProgress = tempValue - minTemp
}
"111" -> {//厨房定时
-
+ val timeValue = parseObject[it]
+ timeScope.forEachIndexed { index, i ->
+ if (i == timeValue) {
+ timeSeekBar.currentProgress = index
+ return@forEach
+ }
+ }
}
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 445738d..1cc04ea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,6 @@
-
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index d5c9eea..2a8c6e9 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -189,10 +189,18 @@
}
"9" -> {//温度设置
-
+ val tempValue = parseObject[it] as Int
+ //转为刻度
+ temperatureSlider.currentProgress = tempValue - minTemp
}
"111" -> {//厨房定时
-
+ val timeValue = parseObject[it]
+ timeScope.forEachIndexed { index, i ->
+ if (i == timeValue) {
+ timeSeekBar.currentProgress = index
+ return@forEach
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
index 62978dc..206fbff 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
@@ -55,6 +55,12 @@
} else {
"0"
}
+ deviceStatusSwitch.isChecked = isDeviceWorking
+ deviceStateView.text = if (isDeviceWorking) {
+ "已开机"
+ } else {
+ "已关机"
+ }
paramObject.put("workStatus", switchStatus)
paramObject.put("switchStatus", switchStatus)
}
@@ -74,6 +80,14 @@
)
paramObject.put("currentTemperature", currentTempView.text)
}
+ "13" -> {
+ deviceStateView.text = when (parseObject[it] as String) {
+ "guanji" -> "已关机"
+ "gongzuozhong" -> "工作中"
+ "guzhang" -> "故障"
+ else -> "已开机"
+ }
+ }
}
}
}
@@ -102,7 +116,6 @@
wifiLayout.visibility = View.GONE
paramObject.put("wifiStatus", "OFF")
}
- deviceStatusSwitch.isChecked = isDeviceWorking
}
override fun observeRequestState() {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 445738d..1cc04ea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,6 @@
-
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index d5c9eea..2a8c6e9 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -189,10 +189,18 @@
}
"9" -> {//温度设置
-
+ val tempValue = parseObject[it] as Int
+ //转为刻度
+ temperatureSlider.currentProgress = tempValue - minTemp
}
"111" -> {//厨房定时
-
+ val timeValue = parseObject[it]
+ timeScope.forEachIndexed { index, i ->
+ if (i == timeValue) {
+ timeSeekBar.currentProgress = index
+ return@forEach
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
index 62978dc..206fbff 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
@@ -55,6 +55,12 @@
} else {
"0"
}
+ deviceStatusSwitch.isChecked = isDeviceWorking
+ deviceStateView.text = if (isDeviceWorking) {
+ "已开机"
+ } else {
+ "已关机"
+ }
paramObject.put("workStatus", switchStatus)
paramObject.put("switchStatus", switchStatus)
}
@@ -74,6 +80,14 @@
)
paramObject.put("currentTemperature", currentTempView.text)
}
+ "13" -> {
+ deviceStateView.text = when (parseObject[it] as String) {
+ "guanji" -> "已关机"
+ "gongzuozhong" -> "工作中"
+ "guzhang" -> "故障"
+ else -> "已开机"
+ }
+ }
}
}
}
@@ -102,7 +116,6 @@
wifiLayout.visibility = View.GONE
paramObject.put("wifiStatus", "OFF")
}
- deviceStatusSwitch.isChecked = isDeviceWorking
}
override fun observeRequestState() {
diff --git a/app/src/main/java/com/casic/br/model/TimeConfigModel.java b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
new file mode 100644
index 0000000..341388b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
@@ -0,0 +1,38 @@
+package com.casic.br.model;
+
+import com.google.gson.annotations.SerializedName;
+
+public class TimeConfigModel {
+
+ private DpsModel dps;
+ private String time;
+
+ public DpsModel getDps() {
+ return dps;
+ }
+
+ public void setDps(DpsModel dps) {
+ this.dps = dps;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+
+ public static class DpsModel {
+ @SerializedName("16")
+ private String _$16;
+
+ public String get_$16() {
+ return _$16;
+ }
+
+ public void set_$16(String _$16) {
+ this._$16 = _$16;
+ }
+ }
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 445738d..1cc04ea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,6 @@
-
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index d5c9eea..2a8c6e9 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -189,10 +189,18 @@
}
"9" -> {//温度设置
-
+ val tempValue = parseObject[it] as Int
+ //转为刻度
+ temperatureSlider.currentProgress = tempValue - minTemp
}
"111" -> {//厨房定时
-
+ val timeValue = parseObject[it]
+ timeScope.forEachIndexed { index, i ->
+ if (i == timeValue) {
+ timeSeekBar.currentProgress = index
+ return@forEach
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
index 62978dc..206fbff 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
@@ -55,6 +55,12 @@
} else {
"0"
}
+ deviceStatusSwitch.isChecked = isDeviceWorking
+ deviceStateView.text = if (isDeviceWorking) {
+ "已开机"
+ } else {
+ "已关机"
+ }
paramObject.put("workStatus", switchStatus)
paramObject.put("switchStatus", switchStatus)
}
@@ -74,6 +80,14 @@
)
paramObject.put("currentTemperature", currentTempView.text)
}
+ "13" -> {
+ deviceStateView.text = when (parseObject[it] as String) {
+ "guanji" -> "已关机"
+ "gongzuozhong" -> "工作中"
+ "guzhang" -> "故障"
+ else -> "已开机"
+ }
+ }
}
}
}
@@ -102,7 +116,6 @@
wifiLayout.visibility = View.GONE
paramObject.put("wifiStatus", "OFF")
}
- deviceStatusSwitch.isChecked = isDeviceWorking
}
override fun observeRequestState() {
diff --git a/app/src/main/java/com/casic/br/model/TimeConfigModel.java b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
new file mode 100644
index 0000000..341388b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
@@ -0,0 +1,38 @@
+package com.casic.br.model;
+
+import com.google.gson.annotations.SerializedName;
+
+public class TimeConfigModel {
+
+ private DpsModel dps;
+ private String time;
+
+ public DpsModel getDps() {
+ return dps;
+ }
+
+ public void setDps(DpsModel dps) {
+ this.dps = dps;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+
+ public static class DpsModel {
+ @SerializedName("16")
+ private String _$16;
+
+ public String get_$16() {
+ return _$16;
+ }
+
+ public void set_$16(String _$16) {
+ this._$16 = _$16;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/utils/CommandManager.kt b/app/src/main/java/com/casic/br/utils/CommandManager.kt
index 60ccad8..b371e13 100644
--- a/app/src/main/java/com/casic/br/utils/CommandManager.kt
+++ b/app/src/main/java/com/casic/br/utils/CommandManager.kt
@@ -4,6 +4,7 @@
import com.tuya.smart.android.device.builder.TuyaTimerBuilder
import com.tuya.smart.android.device.enums.TimerDeviceTypeEnum
import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.constant.TimerUpdateEnum
import com.tuya.smart.sdk.api.IResultCallback
import com.tuya.smart.sdk.api.ITuyaDevice
@@ -35,10 +36,8 @@
})
}
- //TODO 待涂鸦确认
fun addDeviceTimer(
- taskName: String, deviceId: String, dps: String, loops: String, aliasName: String,
- status: Int, appPush: Boolean
+ taskName: String, deviceId: String, dps: String, loops: String, aliasName: String
) {
val builder = TuyaTimerBuilder.Builder()
.taskName(taskName)
@@ -47,12 +46,12 @@
.actions(dps)
.loops(loops)
.aliasName(aliasName)
- .status(status)
- .appPush(appPush)
+ .status(1)
+ .appPush(true)
.build()
TuyaHomeSdk.getTimerInstance().addTimer(builder, object : IResultCallback {
override fun onError(code: String?, error: String?) {
-
+ Log.e(kTag, "code: $code --- onError: $error")
}
override fun onSuccess() {
@@ -60,4 +59,21 @@
}
})
}
+
+ fun deleteDeviceTimer(taskName: String, deviceId: String) {
+ TuyaHomeSdk.getTimerInstance().updateCategoryTimerStatus(
+ taskName,
+ deviceId,
+ TimerDeviceTypeEnum.DEVICE,
+ TimerUpdateEnum.DELETE,
+ object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.e(kTag, "code: $code --- onError: $error")
+ }
+
+ override fun onSuccess() {
+
+ }
+ })
+ }
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 445738d..1cc04ea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,6 @@
-
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index d5c9eea..2a8c6e9 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -189,10 +189,18 @@
}
"9" -> {//温度设置
-
+ val tempValue = parseObject[it] as Int
+ //转为刻度
+ temperatureSlider.currentProgress = tempValue - minTemp
}
"111" -> {//厨房定时
-
+ val timeValue = parseObject[it]
+ timeScope.forEachIndexed { index, i ->
+ if (i == timeValue) {
+ timeSeekBar.currentProgress = index
+ return@forEach
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
index 62978dc..206fbff 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
@@ -55,6 +55,12 @@
} else {
"0"
}
+ deviceStatusSwitch.isChecked = isDeviceWorking
+ deviceStateView.text = if (isDeviceWorking) {
+ "已开机"
+ } else {
+ "已关机"
+ }
paramObject.put("workStatus", switchStatus)
paramObject.put("switchStatus", switchStatus)
}
@@ -74,6 +80,14 @@
)
paramObject.put("currentTemperature", currentTempView.text)
}
+ "13" -> {
+ deviceStateView.text = when (parseObject[it] as String) {
+ "guanji" -> "已关机"
+ "gongzuozhong" -> "工作中"
+ "guzhang" -> "故障"
+ else -> "已开机"
+ }
+ }
}
}
}
@@ -102,7 +116,6 @@
wifiLayout.visibility = View.GONE
paramObject.put("wifiStatus", "OFF")
}
- deviceStatusSwitch.isChecked = isDeviceWorking
}
override fun observeRequestState() {
diff --git a/app/src/main/java/com/casic/br/model/TimeConfigModel.java b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
new file mode 100644
index 0000000..341388b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
@@ -0,0 +1,38 @@
+package com.casic.br.model;
+
+import com.google.gson.annotations.SerializedName;
+
+public class TimeConfigModel {
+
+ private DpsModel dps;
+ private String time;
+
+ public DpsModel getDps() {
+ return dps;
+ }
+
+ public void setDps(DpsModel dps) {
+ this.dps = dps;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+
+ public static class DpsModel {
+ @SerializedName("16")
+ private String _$16;
+
+ public String get_$16() {
+ return _$16;
+ }
+
+ public void set_$16(String _$16) {
+ this._$16 = _$16;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/utils/CommandManager.kt b/app/src/main/java/com/casic/br/utils/CommandManager.kt
index 60ccad8..b371e13 100644
--- a/app/src/main/java/com/casic/br/utils/CommandManager.kt
+++ b/app/src/main/java/com/casic/br/utils/CommandManager.kt
@@ -4,6 +4,7 @@
import com.tuya.smart.android.device.builder.TuyaTimerBuilder
import com.tuya.smart.android.device.enums.TimerDeviceTypeEnum
import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.constant.TimerUpdateEnum
import com.tuya.smart.sdk.api.IResultCallback
import com.tuya.smart.sdk.api.ITuyaDevice
@@ -35,10 +36,8 @@
})
}
- //TODO 待涂鸦确认
fun addDeviceTimer(
- taskName: String, deviceId: String, dps: String, loops: String, aliasName: String,
- status: Int, appPush: Boolean
+ taskName: String, deviceId: String, dps: String, loops: String, aliasName: String
) {
val builder = TuyaTimerBuilder.Builder()
.taskName(taskName)
@@ -47,12 +46,12 @@
.actions(dps)
.loops(loops)
.aliasName(aliasName)
- .status(status)
- .appPush(appPush)
+ .status(1)
+ .appPush(true)
.build()
TuyaHomeSdk.getTimerInstance().addTimer(builder, object : IResultCallback {
override fun onError(code: String?, error: String?) {
-
+ Log.e(kTag, "code: $code --- onError: $error")
}
override fun onSuccess() {
@@ -60,4 +59,21 @@
}
})
}
+
+ fun deleteDeviceTimer(taskName: String, deviceId: String) {
+ TuyaHomeSdk.getTimerInstance().updateCategoryTimerStatus(
+ taskName,
+ deviceId,
+ TimerDeviceTypeEnum.DEVICE,
+ TimerUpdateEnum.DELETE,
+ object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.e(kTag, "code: $code --- onError: $error")
+ }
+
+ override fun onSuccess() {
+
+ }
+ })
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 1a2a9c8..aa65140 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -26,8 +26,6 @@
}
private fun startSplashScreenActivity() {
- //TODO 不要开屏页
-// navigatePageTo()
navigatePageTo()
finish()
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 445738d..1cc04ea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,6 @@
-
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index d5c9eea..2a8c6e9 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -189,10 +189,18 @@
}
"9" -> {//温度设置
-
+ val tempValue = parseObject[it] as Int
+ //转为刻度
+ temperatureSlider.currentProgress = tempValue - minTemp
}
"111" -> {//厨房定时
-
+ val timeValue = parseObject[it]
+ timeScope.forEachIndexed { index, i ->
+ if (i == timeValue) {
+ timeSeekBar.currentProgress = index
+ return@forEach
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
index 62978dc..206fbff 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
@@ -55,6 +55,12 @@
} else {
"0"
}
+ deviceStatusSwitch.isChecked = isDeviceWorking
+ deviceStateView.text = if (isDeviceWorking) {
+ "已开机"
+ } else {
+ "已关机"
+ }
paramObject.put("workStatus", switchStatus)
paramObject.put("switchStatus", switchStatus)
}
@@ -74,6 +80,14 @@
)
paramObject.put("currentTemperature", currentTempView.text)
}
+ "13" -> {
+ deviceStateView.text = when (parseObject[it] as String) {
+ "guanji" -> "已关机"
+ "gongzuozhong" -> "工作中"
+ "guzhang" -> "故障"
+ else -> "已开机"
+ }
+ }
}
}
}
@@ -102,7 +116,6 @@
wifiLayout.visibility = View.GONE
paramObject.put("wifiStatus", "OFF")
}
- deviceStatusSwitch.isChecked = isDeviceWorking
}
override fun observeRequestState() {
diff --git a/app/src/main/java/com/casic/br/model/TimeConfigModel.java b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
new file mode 100644
index 0000000..341388b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
@@ -0,0 +1,38 @@
+package com.casic.br.model;
+
+import com.google.gson.annotations.SerializedName;
+
+public class TimeConfigModel {
+
+ private DpsModel dps;
+ private String time;
+
+ public DpsModel getDps() {
+ return dps;
+ }
+
+ public void setDps(DpsModel dps) {
+ this.dps = dps;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+
+ public static class DpsModel {
+ @SerializedName("16")
+ private String _$16;
+
+ public String get_$16() {
+ return _$16;
+ }
+
+ public void set_$16(String _$16) {
+ this._$16 = _$16;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/utils/CommandManager.kt b/app/src/main/java/com/casic/br/utils/CommandManager.kt
index 60ccad8..b371e13 100644
--- a/app/src/main/java/com/casic/br/utils/CommandManager.kt
+++ b/app/src/main/java/com/casic/br/utils/CommandManager.kt
@@ -4,6 +4,7 @@
import com.tuya.smart.android.device.builder.TuyaTimerBuilder
import com.tuya.smart.android.device.enums.TimerDeviceTypeEnum
import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.constant.TimerUpdateEnum
import com.tuya.smart.sdk.api.IResultCallback
import com.tuya.smart.sdk.api.ITuyaDevice
@@ -35,10 +36,8 @@
})
}
- //TODO 待涂鸦确认
fun addDeviceTimer(
- taskName: String, deviceId: String, dps: String, loops: String, aliasName: String,
- status: Int, appPush: Boolean
+ taskName: String, deviceId: String, dps: String, loops: String, aliasName: String
) {
val builder = TuyaTimerBuilder.Builder()
.taskName(taskName)
@@ -47,12 +46,12 @@
.actions(dps)
.loops(loops)
.aliasName(aliasName)
- .status(status)
- .appPush(appPush)
+ .status(1)
+ .appPush(true)
.build()
TuyaHomeSdk.getTimerInstance().addTimer(builder, object : IResultCallback {
override fun onError(code: String?, error: String?) {
-
+ Log.e(kTag, "code: $code --- onError: $error")
}
override fun onSuccess() {
@@ -60,4 +59,21 @@
}
})
}
+
+ fun deleteDeviceTimer(taskName: String, deviceId: String) {
+ TuyaHomeSdk.getTimerInstance().updateCategoryTimerStatus(
+ taskName,
+ deviceId,
+ TimerDeviceTypeEnum.DEVICE,
+ TimerUpdateEnum.DELETE,
+ object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.e(kTag, "code: $code --- onError: $error")
+ }
+
+ override fun onSuccess() {
+
+ }
+ })
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 1a2a9c8..aa65140 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -26,8 +26,6 @@
}
private fun startSplashScreenActivity() {
- //TODO 不要开屏页
-// navigatePageTo()
navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
deleted file mode 100644
index 4fdf7dd..0000000
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.casic.br.view
-
-import android.annotation.SuppressLint
-import android.os.CountDownTimer
-import android.view.ViewGroup
-import com.casic.br.R
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.qmuiteam.qmui.util.QMUIDisplayHelper
-import kotlinx.android.synthetic.main.activity_splash.*
-
-@SuppressLint("CustomSplashScreen")
-class SplashScreenActivity : KotlinBaseActivity() {
-
- private lateinit var countDownTimer: CountDownTimer
-
- override fun initLayoutView(): Int = R.layout.activity_splash
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(false).init()
- //根据不同设备状态栏高度设置"跳过"按钮的Margin值
- val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
- val rightMargin = QMUIDisplayHelper.dp2px(this, 10)
- if (skipButton.layoutParams is ViewGroup.MarginLayoutParams) {
- val params = skipButton.layoutParams as ViewGroup.MarginLayoutParams
- params.setMargins(skipButton.width, statusBarHeight, rightMargin, 0)
- skipButton.requestLayout()
- }
- }
-
- override fun initData() {
- countDownTimer = object : CountDownTimer(4000, 1000) {
- override fun onFinish() {
- startMainActivity()
- }
-
- override fun onTick(millisUntilFinished: Long) {
- skipButton.text = String.format("跳过\u3000${(millisUntilFinished / 1000)}s")
- }
- }
- }
-
- override fun observeRequestState() {
-
- }
-
- override fun initEvent() {
- countDownTimer.start()
- skipButton.setChangeAlphaWhenPress(true)
- skipButton.setOnClickListener {
- countDownTimer.cancel()
- startMainActivity()
- }
- }
-
- fun startMainActivity() {
- navigatePageTo()
- finish()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 445738d..1cc04ea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,6 @@
-
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index d5c9eea..2a8c6e9 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -189,10 +189,18 @@
}
"9" -> {//温度设置
-
+ val tempValue = parseObject[it] as Int
+ //转为刻度
+ temperatureSlider.currentProgress = tempValue - minTemp
}
"111" -> {//厨房定时
-
+ val timeValue = parseObject[it]
+ timeScope.forEachIndexed { index, i ->
+ if (i == timeValue) {
+ timeSeekBar.currentProgress = index
+ return@forEach
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
index 62978dc..206fbff 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
@@ -55,6 +55,12 @@
} else {
"0"
}
+ deviceStatusSwitch.isChecked = isDeviceWorking
+ deviceStateView.text = if (isDeviceWorking) {
+ "已开机"
+ } else {
+ "已关机"
+ }
paramObject.put("workStatus", switchStatus)
paramObject.put("switchStatus", switchStatus)
}
@@ -74,6 +80,14 @@
)
paramObject.put("currentTemperature", currentTempView.text)
}
+ "13" -> {
+ deviceStateView.text = when (parseObject[it] as String) {
+ "guanji" -> "已关机"
+ "gongzuozhong" -> "工作中"
+ "guzhang" -> "故障"
+ else -> "已开机"
+ }
+ }
}
}
}
@@ -102,7 +116,6 @@
wifiLayout.visibility = View.GONE
paramObject.put("wifiStatus", "OFF")
}
- deviceStatusSwitch.isChecked = isDeviceWorking
}
override fun observeRequestState() {
diff --git a/app/src/main/java/com/casic/br/model/TimeConfigModel.java b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
new file mode 100644
index 0000000..341388b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
@@ -0,0 +1,38 @@
+package com.casic.br.model;
+
+import com.google.gson.annotations.SerializedName;
+
+public class TimeConfigModel {
+
+ private DpsModel dps;
+ private String time;
+
+ public DpsModel getDps() {
+ return dps;
+ }
+
+ public void setDps(DpsModel dps) {
+ this.dps = dps;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+
+ public static class DpsModel {
+ @SerializedName("16")
+ private String _$16;
+
+ public String get_$16() {
+ return _$16;
+ }
+
+ public void set_$16(String _$16) {
+ this._$16 = _$16;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/utils/CommandManager.kt b/app/src/main/java/com/casic/br/utils/CommandManager.kt
index 60ccad8..b371e13 100644
--- a/app/src/main/java/com/casic/br/utils/CommandManager.kt
+++ b/app/src/main/java/com/casic/br/utils/CommandManager.kt
@@ -4,6 +4,7 @@
import com.tuya.smart.android.device.builder.TuyaTimerBuilder
import com.tuya.smart.android.device.enums.TimerDeviceTypeEnum
import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.constant.TimerUpdateEnum
import com.tuya.smart.sdk.api.IResultCallback
import com.tuya.smart.sdk.api.ITuyaDevice
@@ -35,10 +36,8 @@
})
}
- //TODO 待涂鸦确认
fun addDeviceTimer(
- taskName: String, deviceId: String, dps: String, loops: String, aliasName: String,
- status: Int, appPush: Boolean
+ taskName: String, deviceId: String, dps: String, loops: String, aliasName: String
) {
val builder = TuyaTimerBuilder.Builder()
.taskName(taskName)
@@ -47,12 +46,12 @@
.actions(dps)
.loops(loops)
.aliasName(aliasName)
- .status(status)
- .appPush(appPush)
+ .status(1)
+ .appPush(true)
.build()
TuyaHomeSdk.getTimerInstance().addTimer(builder, object : IResultCallback {
override fun onError(code: String?, error: String?) {
-
+ Log.e(kTag, "code: $code --- onError: $error")
}
override fun onSuccess() {
@@ -60,4 +59,21 @@
}
})
}
+
+ fun deleteDeviceTimer(taskName: String, deviceId: String) {
+ TuyaHomeSdk.getTimerInstance().updateCategoryTimerStatus(
+ taskName,
+ deviceId,
+ TimerDeviceTypeEnum.DEVICE,
+ TimerUpdateEnum.DELETE,
+ object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.e(kTag, "code: $code --- onError: $error")
+ }
+
+ override fun onSuccess() {
+
+ }
+ })
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 1a2a9c8..aa65140 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -26,8 +26,6 @@
}
private fun startSplashScreenActivity() {
- //TODO 不要开屏页
-// navigatePageTo()
navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
deleted file mode 100644
index 4fdf7dd..0000000
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.casic.br.view
-
-import android.annotation.SuppressLint
-import android.os.CountDownTimer
-import android.view.ViewGroup
-import com.casic.br.R
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.qmuiteam.qmui.util.QMUIDisplayHelper
-import kotlinx.android.synthetic.main.activity_splash.*
-
-@SuppressLint("CustomSplashScreen")
-class SplashScreenActivity : KotlinBaseActivity() {
-
- private lateinit var countDownTimer: CountDownTimer
-
- override fun initLayoutView(): Int = R.layout.activity_splash
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(false).init()
- //根据不同设备状态栏高度设置"跳过"按钮的Margin值
- val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
- val rightMargin = QMUIDisplayHelper.dp2px(this, 10)
- if (skipButton.layoutParams is ViewGroup.MarginLayoutParams) {
- val params = skipButton.layoutParams as ViewGroup.MarginLayoutParams
- params.setMargins(skipButton.width, statusBarHeight, rightMargin, 0)
- skipButton.requestLayout()
- }
- }
-
- override fun initData() {
- countDownTimer = object : CountDownTimer(4000, 1000) {
- override fun onFinish() {
- startMainActivity()
- }
-
- override fun onTick(millisUntilFinished: Long) {
- skipButton.text = String.format("跳过\u3000${(millisUntilFinished / 1000)}s")
- }
- }
- }
-
- override fun observeRequestState() {
-
- }
-
- override fun initEvent() {
- countDownTimer.start()
- skipButton.setChangeAlphaWhenPress(true)
- skipButton.setOnClickListener {
- countDownTimer.cancel()
- startMainActivity()
- }
- }
-
- fun startMainActivity() {
- navigatePageTo()
- finish()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 0aa82f6..e221d61 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -80,7 +80,6 @@
fragmentPages.add(ServicePageFragment())
deviceInstance.registerDevListener(object : TuyaDeviceListener() {
-
override fun onDpUpdate(devId: String?, dpStr: String?) {
Log.d(kTag, "onDpUpdate: $dpStr")
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 445738d..1cc04ea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,6 @@
-
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index d5c9eea..2a8c6e9 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -189,10 +189,18 @@
}
"9" -> {//温度设置
-
+ val tempValue = parseObject[it] as Int
+ //转为刻度
+ temperatureSlider.currentProgress = tempValue - minTemp
}
"111" -> {//厨房定时
-
+ val timeValue = parseObject[it]
+ timeScope.forEachIndexed { index, i ->
+ if (i == timeValue) {
+ timeSeekBar.currentProgress = index
+ return@forEach
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
index 62978dc..206fbff 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
@@ -55,6 +55,12 @@
} else {
"0"
}
+ deviceStatusSwitch.isChecked = isDeviceWorking
+ deviceStateView.text = if (isDeviceWorking) {
+ "已开机"
+ } else {
+ "已关机"
+ }
paramObject.put("workStatus", switchStatus)
paramObject.put("switchStatus", switchStatus)
}
@@ -74,6 +80,14 @@
)
paramObject.put("currentTemperature", currentTempView.text)
}
+ "13" -> {
+ deviceStateView.text = when (parseObject[it] as String) {
+ "guanji" -> "已关机"
+ "gongzuozhong" -> "工作中"
+ "guzhang" -> "故障"
+ else -> "已开机"
+ }
+ }
}
}
}
@@ -102,7 +116,6 @@
wifiLayout.visibility = View.GONE
paramObject.put("wifiStatus", "OFF")
}
- deviceStatusSwitch.isChecked = isDeviceWorking
}
override fun observeRequestState() {
diff --git a/app/src/main/java/com/casic/br/model/TimeConfigModel.java b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
new file mode 100644
index 0000000..341388b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
@@ -0,0 +1,38 @@
+package com.casic.br.model;
+
+import com.google.gson.annotations.SerializedName;
+
+public class TimeConfigModel {
+
+ private DpsModel dps;
+ private String time;
+
+ public DpsModel getDps() {
+ return dps;
+ }
+
+ public void setDps(DpsModel dps) {
+ this.dps = dps;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+
+ public static class DpsModel {
+ @SerializedName("16")
+ private String _$16;
+
+ public String get_$16() {
+ return _$16;
+ }
+
+ public void set_$16(String _$16) {
+ this._$16 = _$16;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/utils/CommandManager.kt b/app/src/main/java/com/casic/br/utils/CommandManager.kt
index 60ccad8..b371e13 100644
--- a/app/src/main/java/com/casic/br/utils/CommandManager.kt
+++ b/app/src/main/java/com/casic/br/utils/CommandManager.kt
@@ -4,6 +4,7 @@
import com.tuya.smart.android.device.builder.TuyaTimerBuilder
import com.tuya.smart.android.device.enums.TimerDeviceTypeEnum
import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.constant.TimerUpdateEnum
import com.tuya.smart.sdk.api.IResultCallback
import com.tuya.smart.sdk.api.ITuyaDevice
@@ -35,10 +36,8 @@
})
}
- //TODO 待涂鸦确认
fun addDeviceTimer(
- taskName: String, deviceId: String, dps: String, loops: String, aliasName: String,
- status: Int, appPush: Boolean
+ taskName: String, deviceId: String, dps: String, loops: String, aliasName: String
) {
val builder = TuyaTimerBuilder.Builder()
.taskName(taskName)
@@ -47,12 +46,12 @@
.actions(dps)
.loops(loops)
.aliasName(aliasName)
- .status(status)
- .appPush(appPush)
+ .status(1)
+ .appPush(true)
.build()
TuyaHomeSdk.getTimerInstance().addTimer(builder, object : IResultCallback {
override fun onError(code: String?, error: String?) {
-
+ Log.e(kTag, "code: $code --- onError: $error")
}
override fun onSuccess() {
@@ -60,4 +59,21 @@
}
})
}
+
+ fun deleteDeviceTimer(taskName: String, deviceId: String) {
+ TuyaHomeSdk.getTimerInstance().updateCategoryTimerStatus(
+ taskName,
+ deviceId,
+ TimerDeviceTypeEnum.DEVICE,
+ TimerUpdateEnum.DELETE,
+ object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.e(kTag, "code: $code --- onError: $error")
+ }
+
+ override fun onSuccess() {
+
+ }
+ })
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 1a2a9c8..aa65140 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -26,8 +26,6 @@
}
private fun startSplashScreenActivity() {
- //TODO 不要开屏页
-// navigatePageTo()
navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
deleted file mode 100644
index 4fdf7dd..0000000
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.casic.br.view
-
-import android.annotation.SuppressLint
-import android.os.CountDownTimer
-import android.view.ViewGroup
-import com.casic.br.R
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.qmuiteam.qmui.util.QMUIDisplayHelper
-import kotlinx.android.synthetic.main.activity_splash.*
-
-@SuppressLint("CustomSplashScreen")
-class SplashScreenActivity : KotlinBaseActivity() {
-
- private lateinit var countDownTimer: CountDownTimer
-
- override fun initLayoutView(): Int = R.layout.activity_splash
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(false).init()
- //根据不同设备状态栏高度设置"跳过"按钮的Margin值
- val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
- val rightMargin = QMUIDisplayHelper.dp2px(this, 10)
- if (skipButton.layoutParams is ViewGroup.MarginLayoutParams) {
- val params = skipButton.layoutParams as ViewGroup.MarginLayoutParams
- params.setMargins(skipButton.width, statusBarHeight, rightMargin, 0)
- skipButton.requestLayout()
- }
- }
-
- override fun initData() {
- countDownTimer = object : CountDownTimer(4000, 1000) {
- override fun onFinish() {
- startMainActivity()
- }
-
- override fun onTick(millisUntilFinished: Long) {
- skipButton.text = String.format("跳过\u3000${(millisUntilFinished / 1000)}s")
- }
- }
- }
-
- override fun observeRequestState() {
-
- }
-
- override fun initEvent() {
- countDownTimer.start()
- skipButton.setChangeAlphaWhenPress(true)
- skipButton.setOnClickListener {
- countDownTimer.cancel()
- startMainActivity()
- }
- }
-
- fun startMainActivity() {
- navigatePageTo()
- finish()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 0aa82f6..e221d61 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -80,7 +80,6 @@
fragmentPages.add(ServicePageFragment())
deviceInstance.registerDevListener(object : TuyaDeviceListener() {
-
override fun onDpUpdate(devId: String?, dpStr: String?) {
Log.d(kTag, "onDpUpdate: $dpStr")
diff --git a/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt b/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
index 36f3838..9afd90b 100644
--- a/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
@@ -5,9 +5,8 @@
import androidx.activity.result.contract.ActivityResultContracts
import com.alibaba.fastjson.JSONObject
import com.casic.br.R
-import com.casic.br.extensions.createCommand
+import com.casic.br.model.TimeConfigModel
import com.casic.br.utils.CommandManager
-import com.casic.br.utils.TuyaDeviceListener
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.convertColor
@@ -15,10 +14,10 @@
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import com.tuya.smart.android.common.utils.Base64
-import com.tuya.smart.android.common.utils.HexUtil
+import com.tuya.smart.android.device.enums.TimerDeviceTypeEnum
import com.tuya.smart.home.sdk.TuyaHomeSdk
-import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaDataCallback
+import com.tuya.smart.sdk.bean.TimerTask
import kotlinx.android.synthetic.main.activity_time_config.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -29,7 +28,6 @@
private val kTag = "TimeConfigActivity"
private lateinit var deviceId: String
- private lateinit var deviceInstance: ITuyaDevice
private var selectedTime: String? = null
private var selectedTemp: String? = null
@@ -49,21 +47,33 @@
override fun initData() {
deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
- deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
- CommandManager.getTuyaDp(deviceInstance, "16")
- deviceInstance.registerDevListener(object : TuyaDeviceListener() {
- override fun onDpUpdate(devId: String?, dpStr: String?) {
- Log.d(kTag, "onDpUpdate: $dpStr")
- val parseObject = JSONObject.parseObject(dpStr)
- parseObject.keys.forEach {
- //{"16":"070009002400120014002400"}
- if (it == "16") {
+ TuyaHomeSdk.getTimerInstance()
+ .getTimerList("预约时间设定", deviceId, TimerDeviceTypeEnum.DEVICE, object :
+ ITuyaDataCallback {
+ override fun onSuccess(result: TimerTask?) {
+ if (result == null) {
+ Log.e(kTag, "预约时间未设定")
+ return
+ }
+ Log.d(kTag, result.toJson())
+ if (result.timerList.isEmpty()) {
+ timeConfigSwitch.isChecked = false
+ } else {
+ timeConfigSwitch.isChecked = result.timerTaskStatus.isOpen
+ val last = result.timerList.last()
+ timeConfigView.text = last.time
+ val parseObject = JSONObject.parseObject(last.value)
+ tempConfigView.text =
+ String.format("水温:${parseObject["16"]}${resources.getString(R.string.temperature_unit)}")
}
}
- }
- })
+
+ override fun onError(errorCode: String?, errorMessage: String?) {
+
+ }
+
+ })
}
private val timeConfigLauncher =
@@ -83,51 +93,54 @@
timeConfigLauncher.launch(Intent(this, AddTimeConfigActivity::class.java))
}
- timeConfigSwitch.setOnCheckedChangeListener { view, isChecked ->
- val status = if (isChecked) {
- 1
+ timeConfigSwitch.setOnClickListener {
+ if (timeConfigSwitch.isChecked) {
+ /**
+ * 循环次数,格式为 0000000,每一位数字的取值可以是
+ * 0:关闭
+ * 1:开启
+ * 从左至右依次表示周日、周一、周二、周三、周四、周五、周六。
+ * 如每个周一循环该任务,则取值为 0100000。
+ * 0000000 表示只执行一次,1111111 表示每天执行。
+ *
+ * 设备功能(dps)的操作任务的 JSON 格式表达方式,格式为 {"dps":{}, "time":""},
+ * 其中 Raw 类型的 DP 需要转换格式,
+ * 转换方式为:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
+ * */
+
+ if (timeConfigView.text.isNullOrBlank() || tempConfigView.text.isNullOrBlank()) {
+ "操作错误!请先设置定时参数".show(this)
+ timeConfigSwitch.isChecked = false
+ return@setOnClickListener
+ }
+
+// val dps = mutableMapOf()
+// dps["16"] = selectedTemp!!
+// val time = mutableMapOf()
+// time["time"] = selectedTime!!
+// val action =
+// "{\"dps\":" + JSONObject.toJSONString(dps) + "," + JSONObject.toJSONString(time)
+// .replace("{", "").replace("}", "") + "}"
+// Log.d(kTag, "action: $action")
+ /**
+ * {"dps":{"16":"36°C"},"time":"10:35"}
+ * */
+ val timeConfig = TimeConfigModel()
+ val dpsModel = TimeConfigModel.DpsModel()
+ dpsModel.`_$16` = selectedTemp!!
+ timeConfig.dps = dpsModel
+ timeConfig.time = selectedTime!!
+
+ CommandManager.addDeviceTimer(
+ "预约时间设定",
+ deviceId,
+ timeConfig.toJson(),
+ "0000000",
+ "热水器"
+ )
} else {
- 0
+ CommandManager.deleteDeviceTimer("预约时间设定", deviceId)
}
-
- /**
- * 循环次数,格式为 0000000,每一位数字的取值可以是
- * 0:关闭
- * 1:开启
- * 从左至右依次表示周日、周一、周二、周三、周四、周五、周六。
- * 如每个周一循环该任务,则取值为 0100000。
- * 0000000 表示只执行一次,1111111 表示每天执行。
- *
- * 设备功能(dps)的操作任务的 JSON 格式表达方式,格式为 {"dps":{}, "time":""},
- * 其中 Raw 类型的 DP 需要转换格式,
- * 转换方式为:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
- * */
-
- if (selectedTime.isNullOrBlank() || selectedTemp.isNullOrBlank()) {
- "请先设置热水器参数".show(this)
- view.isChecked = false
- return@setOnCheckedChangeListener
- }
- val dps = "16".createCommand(selectedTemp!!)
- Log.d(kTag, "dps: $dps")
- val dpsRaw = String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
- val map = HashMap()
- map["dps"] = dpsRaw
- map["time"] = selectedTime!!
- val actions = map.toJson()
-
- //{"dps":{"16":"36°C"}, "time":"9:20"}
- Log.d(kTag, "actions: $actions")
-
- CommandManager.addDeviceTimer(
- "预约时间设定",
- deviceId,
- "{\"dps\":{\"16\":\"36°C\"}, \"time\":\"9:20\"}",
- "0000000",
- "热水器",
- status,
- true
- )
}
}
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 445738d..1cc04ea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,6 @@
-
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index d5c9eea..2a8c6e9 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -189,10 +189,18 @@
}
"9" -> {//温度设置
-
+ val tempValue = parseObject[it] as Int
+ //转为刻度
+ temperatureSlider.currentProgress = tempValue - minTemp
}
"111" -> {//厨房定时
-
+ val timeValue = parseObject[it]
+ timeScope.forEachIndexed { index, i ->
+ if (i == timeValue) {
+ timeSeekBar.currentProgress = index
+ return@forEach
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
index 62978dc..206fbff 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
@@ -55,6 +55,12 @@
} else {
"0"
}
+ deviceStatusSwitch.isChecked = isDeviceWorking
+ deviceStateView.text = if (isDeviceWorking) {
+ "已开机"
+ } else {
+ "已关机"
+ }
paramObject.put("workStatus", switchStatus)
paramObject.put("switchStatus", switchStatus)
}
@@ -74,6 +80,14 @@
)
paramObject.put("currentTemperature", currentTempView.text)
}
+ "13" -> {
+ deviceStateView.text = when (parseObject[it] as String) {
+ "guanji" -> "已关机"
+ "gongzuozhong" -> "工作中"
+ "guzhang" -> "故障"
+ else -> "已开机"
+ }
+ }
}
}
}
@@ -102,7 +116,6 @@
wifiLayout.visibility = View.GONE
paramObject.put("wifiStatus", "OFF")
}
- deviceStatusSwitch.isChecked = isDeviceWorking
}
override fun observeRequestState() {
diff --git a/app/src/main/java/com/casic/br/model/TimeConfigModel.java b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
new file mode 100644
index 0000000..341388b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
@@ -0,0 +1,38 @@
+package com.casic.br.model;
+
+import com.google.gson.annotations.SerializedName;
+
+public class TimeConfigModel {
+
+ private DpsModel dps;
+ private String time;
+
+ public DpsModel getDps() {
+ return dps;
+ }
+
+ public void setDps(DpsModel dps) {
+ this.dps = dps;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+
+ public static class DpsModel {
+ @SerializedName("16")
+ private String _$16;
+
+ public String get_$16() {
+ return _$16;
+ }
+
+ public void set_$16(String _$16) {
+ this._$16 = _$16;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/utils/CommandManager.kt b/app/src/main/java/com/casic/br/utils/CommandManager.kt
index 60ccad8..b371e13 100644
--- a/app/src/main/java/com/casic/br/utils/CommandManager.kt
+++ b/app/src/main/java/com/casic/br/utils/CommandManager.kt
@@ -4,6 +4,7 @@
import com.tuya.smart.android.device.builder.TuyaTimerBuilder
import com.tuya.smart.android.device.enums.TimerDeviceTypeEnum
import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.constant.TimerUpdateEnum
import com.tuya.smart.sdk.api.IResultCallback
import com.tuya.smart.sdk.api.ITuyaDevice
@@ -35,10 +36,8 @@
})
}
- //TODO 待涂鸦确认
fun addDeviceTimer(
- taskName: String, deviceId: String, dps: String, loops: String, aliasName: String,
- status: Int, appPush: Boolean
+ taskName: String, deviceId: String, dps: String, loops: String, aliasName: String
) {
val builder = TuyaTimerBuilder.Builder()
.taskName(taskName)
@@ -47,12 +46,12 @@
.actions(dps)
.loops(loops)
.aliasName(aliasName)
- .status(status)
- .appPush(appPush)
+ .status(1)
+ .appPush(true)
.build()
TuyaHomeSdk.getTimerInstance().addTimer(builder, object : IResultCallback {
override fun onError(code: String?, error: String?) {
-
+ Log.e(kTag, "code: $code --- onError: $error")
}
override fun onSuccess() {
@@ -60,4 +59,21 @@
}
})
}
+
+ fun deleteDeviceTimer(taskName: String, deviceId: String) {
+ TuyaHomeSdk.getTimerInstance().updateCategoryTimerStatus(
+ taskName,
+ deviceId,
+ TimerDeviceTypeEnum.DEVICE,
+ TimerUpdateEnum.DELETE,
+ object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.e(kTag, "code: $code --- onError: $error")
+ }
+
+ override fun onSuccess() {
+
+ }
+ })
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 1a2a9c8..aa65140 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -26,8 +26,6 @@
}
private fun startSplashScreenActivity() {
- //TODO 不要开屏页
-// navigatePageTo()
navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
deleted file mode 100644
index 4fdf7dd..0000000
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.casic.br.view
-
-import android.annotation.SuppressLint
-import android.os.CountDownTimer
-import android.view.ViewGroup
-import com.casic.br.R
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.qmuiteam.qmui.util.QMUIDisplayHelper
-import kotlinx.android.synthetic.main.activity_splash.*
-
-@SuppressLint("CustomSplashScreen")
-class SplashScreenActivity : KotlinBaseActivity() {
-
- private lateinit var countDownTimer: CountDownTimer
-
- override fun initLayoutView(): Int = R.layout.activity_splash
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(false).init()
- //根据不同设备状态栏高度设置"跳过"按钮的Margin值
- val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
- val rightMargin = QMUIDisplayHelper.dp2px(this, 10)
- if (skipButton.layoutParams is ViewGroup.MarginLayoutParams) {
- val params = skipButton.layoutParams as ViewGroup.MarginLayoutParams
- params.setMargins(skipButton.width, statusBarHeight, rightMargin, 0)
- skipButton.requestLayout()
- }
- }
-
- override fun initData() {
- countDownTimer = object : CountDownTimer(4000, 1000) {
- override fun onFinish() {
- startMainActivity()
- }
-
- override fun onTick(millisUntilFinished: Long) {
- skipButton.text = String.format("跳过\u3000${(millisUntilFinished / 1000)}s")
- }
- }
- }
-
- override fun observeRequestState() {
-
- }
-
- override fun initEvent() {
- countDownTimer.start()
- skipButton.setChangeAlphaWhenPress(true)
- skipButton.setOnClickListener {
- countDownTimer.cancel()
- startMainActivity()
- }
- }
-
- fun startMainActivity() {
- navigatePageTo()
- finish()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 0aa82f6..e221d61 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -80,7 +80,6 @@
fragmentPages.add(ServicePageFragment())
deviceInstance.registerDevListener(object : TuyaDeviceListener() {
-
override fun onDpUpdate(devId: String?, dpStr: String?) {
Log.d(kTag, "onDpUpdate: $dpStr")
diff --git a/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt b/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
index 36f3838..9afd90b 100644
--- a/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
@@ -5,9 +5,8 @@
import androidx.activity.result.contract.ActivityResultContracts
import com.alibaba.fastjson.JSONObject
import com.casic.br.R
-import com.casic.br.extensions.createCommand
+import com.casic.br.model.TimeConfigModel
import com.casic.br.utils.CommandManager
-import com.casic.br.utils.TuyaDeviceListener
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.convertColor
@@ -15,10 +14,10 @@
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import com.tuya.smart.android.common.utils.Base64
-import com.tuya.smart.android.common.utils.HexUtil
+import com.tuya.smart.android.device.enums.TimerDeviceTypeEnum
import com.tuya.smart.home.sdk.TuyaHomeSdk
-import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaDataCallback
+import com.tuya.smart.sdk.bean.TimerTask
import kotlinx.android.synthetic.main.activity_time_config.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -29,7 +28,6 @@
private val kTag = "TimeConfigActivity"
private lateinit var deviceId: String
- private lateinit var deviceInstance: ITuyaDevice
private var selectedTime: String? = null
private var selectedTemp: String? = null
@@ -49,21 +47,33 @@
override fun initData() {
deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
- deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
- CommandManager.getTuyaDp(deviceInstance, "16")
- deviceInstance.registerDevListener(object : TuyaDeviceListener() {
- override fun onDpUpdate(devId: String?, dpStr: String?) {
- Log.d(kTag, "onDpUpdate: $dpStr")
- val parseObject = JSONObject.parseObject(dpStr)
- parseObject.keys.forEach {
- //{"16":"070009002400120014002400"}
- if (it == "16") {
+ TuyaHomeSdk.getTimerInstance()
+ .getTimerList("预约时间设定", deviceId, TimerDeviceTypeEnum.DEVICE, object :
+ ITuyaDataCallback {
+ override fun onSuccess(result: TimerTask?) {
+ if (result == null) {
+ Log.e(kTag, "预约时间未设定")
+ return
+ }
+ Log.d(kTag, result.toJson())
+ if (result.timerList.isEmpty()) {
+ timeConfigSwitch.isChecked = false
+ } else {
+ timeConfigSwitch.isChecked = result.timerTaskStatus.isOpen
+ val last = result.timerList.last()
+ timeConfigView.text = last.time
+ val parseObject = JSONObject.parseObject(last.value)
+ tempConfigView.text =
+ String.format("水温:${parseObject["16"]}${resources.getString(R.string.temperature_unit)}")
}
}
- }
- })
+
+ override fun onError(errorCode: String?, errorMessage: String?) {
+
+ }
+
+ })
}
private val timeConfigLauncher =
@@ -83,51 +93,54 @@
timeConfigLauncher.launch(Intent(this, AddTimeConfigActivity::class.java))
}
- timeConfigSwitch.setOnCheckedChangeListener { view, isChecked ->
- val status = if (isChecked) {
- 1
+ timeConfigSwitch.setOnClickListener {
+ if (timeConfigSwitch.isChecked) {
+ /**
+ * 循环次数,格式为 0000000,每一位数字的取值可以是
+ * 0:关闭
+ * 1:开启
+ * 从左至右依次表示周日、周一、周二、周三、周四、周五、周六。
+ * 如每个周一循环该任务,则取值为 0100000。
+ * 0000000 表示只执行一次,1111111 表示每天执行。
+ *
+ * 设备功能(dps)的操作任务的 JSON 格式表达方式,格式为 {"dps":{}, "time":""},
+ * 其中 Raw 类型的 DP 需要转换格式,
+ * 转换方式为:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
+ * */
+
+ if (timeConfigView.text.isNullOrBlank() || tempConfigView.text.isNullOrBlank()) {
+ "操作错误!请先设置定时参数".show(this)
+ timeConfigSwitch.isChecked = false
+ return@setOnClickListener
+ }
+
+// val dps = mutableMapOf()
+// dps["16"] = selectedTemp!!
+// val time = mutableMapOf()
+// time["time"] = selectedTime!!
+// val action =
+// "{\"dps\":" + JSONObject.toJSONString(dps) + "," + JSONObject.toJSONString(time)
+// .replace("{", "").replace("}", "") + "}"
+// Log.d(kTag, "action: $action")
+ /**
+ * {"dps":{"16":"36°C"},"time":"10:35"}
+ * */
+ val timeConfig = TimeConfigModel()
+ val dpsModel = TimeConfigModel.DpsModel()
+ dpsModel.`_$16` = selectedTemp!!
+ timeConfig.dps = dpsModel
+ timeConfig.time = selectedTime!!
+
+ CommandManager.addDeviceTimer(
+ "预约时间设定",
+ deviceId,
+ timeConfig.toJson(),
+ "0000000",
+ "热水器"
+ )
} else {
- 0
+ CommandManager.deleteDeviceTimer("预约时间设定", deviceId)
}
-
- /**
- * 循环次数,格式为 0000000,每一位数字的取值可以是
- * 0:关闭
- * 1:开启
- * 从左至右依次表示周日、周一、周二、周三、周四、周五、周六。
- * 如每个周一循环该任务,则取值为 0100000。
- * 0000000 表示只执行一次,1111111 表示每天执行。
- *
- * 设备功能(dps)的操作任务的 JSON 格式表达方式,格式为 {"dps":{}, "time":""},
- * 其中 Raw 类型的 DP 需要转换格式,
- * 转换方式为:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
- * */
-
- if (selectedTime.isNullOrBlank() || selectedTemp.isNullOrBlank()) {
- "请先设置热水器参数".show(this)
- view.isChecked = false
- return@setOnCheckedChangeListener
- }
- val dps = "16".createCommand(selectedTemp!!)
- Log.d(kTag, "dps: $dps")
- val dpsRaw = String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
- val map = HashMap()
- map["dps"] = dpsRaw
- map["time"] = selectedTime!!
- val actions = map.toJson()
-
- //{"dps":{"16":"36°C"}, "time":"9:20"}
- Log.d(kTag, "actions: $actions")
-
- CommandManager.addDeviceTimer(
- "预约时间设定",
- deviceId,
- "{\"dps\":{\"16\":\"36°C\"}, \"time\":\"9:20\"}",
- "0000000",
- "热水器",
- status,
- true
- )
}
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml
deleted file mode 100644
index a84f957..0000000
--- a/app/src/main/res/layout/activity_splash.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 445738d..1cc04ea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,6 @@
-
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index d5c9eea..2a8c6e9 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -189,10 +189,18 @@
}
"9" -> {//温度设置
-
+ val tempValue = parseObject[it] as Int
+ //转为刻度
+ temperatureSlider.currentProgress = tempValue - minTemp
}
"111" -> {//厨房定时
-
+ val timeValue = parseObject[it]
+ timeScope.forEachIndexed { index, i ->
+ if (i == timeValue) {
+ timeSeekBar.currentProgress = index
+ return@forEach
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
index 62978dc..206fbff 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
@@ -55,6 +55,12 @@
} else {
"0"
}
+ deviceStatusSwitch.isChecked = isDeviceWorking
+ deviceStateView.text = if (isDeviceWorking) {
+ "已开机"
+ } else {
+ "已关机"
+ }
paramObject.put("workStatus", switchStatus)
paramObject.put("switchStatus", switchStatus)
}
@@ -74,6 +80,14 @@
)
paramObject.put("currentTemperature", currentTempView.text)
}
+ "13" -> {
+ deviceStateView.text = when (parseObject[it] as String) {
+ "guanji" -> "已关机"
+ "gongzuozhong" -> "工作中"
+ "guzhang" -> "故障"
+ else -> "已开机"
+ }
+ }
}
}
}
@@ -102,7 +116,6 @@
wifiLayout.visibility = View.GONE
paramObject.put("wifiStatus", "OFF")
}
- deviceStatusSwitch.isChecked = isDeviceWorking
}
override fun observeRequestState() {
diff --git a/app/src/main/java/com/casic/br/model/TimeConfigModel.java b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
new file mode 100644
index 0000000..341388b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
@@ -0,0 +1,38 @@
+package com.casic.br.model;
+
+import com.google.gson.annotations.SerializedName;
+
+public class TimeConfigModel {
+
+ private DpsModel dps;
+ private String time;
+
+ public DpsModel getDps() {
+ return dps;
+ }
+
+ public void setDps(DpsModel dps) {
+ this.dps = dps;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+
+ public static class DpsModel {
+ @SerializedName("16")
+ private String _$16;
+
+ public String get_$16() {
+ return _$16;
+ }
+
+ public void set_$16(String _$16) {
+ this._$16 = _$16;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/utils/CommandManager.kt b/app/src/main/java/com/casic/br/utils/CommandManager.kt
index 60ccad8..b371e13 100644
--- a/app/src/main/java/com/casic/br/utils/CommandManager.kt
+++ b/app/src/main/java/com/casic/br/utils/CommandManager.kt
@@ -4,6 +4,7 @@
import com.tuya.smart.android.device.builder.TuyaTimerBuilder
import com.tuya.smart.android.device.enums.TimerDeviceTypeEnum
import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.constant.TimerUpdateEnum
import com.tuya.smart.sdk.api.IResultCallback
import com.tuya.smart.sdk.api.ITuyaDevice
@@ -35,10 +36,8 @@
})
}
- //TODO 待涂鸦确认
fun addDeviceTimer(
- taskName: String, deviceId: String, dps: String, loops: String, aliasName: String,
- status: Int, appPush: Boolean
+ taskName: String, deviceId: String, dps: String, loops: String, aliasName: String
) {
val builder = TuyaTimerBuilder.Builder()
.taskName(taskName)
@@ -47,12 +46,12 @@
.actions(dps)
.loops(loops)
.aliasName(aliasName)
- .status(status)
- .appPush(appPush)
+ .status(1)
+ .appPush(true)
.build()
TuyaHomeSdk.getTimerInstance().addTimer(builder, object : IResultCallback {
override fun onError(code: String?, error: String?) {
-
+ Log.e(kTag, "code: $code --- onError: $error")
}
override fun onSuccess() {
@@ -60,4 +59,21 @@
}
})
}
+
+ fun deleteDeviceTimer(taskName: String, deviceId: String) {
+ TuyaHomeSdk.getTimerInstance().updateCategoryTimerStatus(
+ taskName,
+ deviceId,
+ TimerDeviceTypeEnum.DEVICE,
+ TimerUpdateEnum.DELETE,
+ object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.e(kTag, "code: $code --- onError: $error")
+ }
+
+ override fun onSuccess() {
+
+ }
+ })
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 1a2a9c8..aa65140 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -26,8 +26,6 @@
}
private fun startSplashScreenActivity() {
- //TODO 不要开屏页
-// navigatePageTo()
navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
deleted file mode 100644
index 4fdf7dd..0000000
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.casic.br.view
-
-import android.annotation.SuppressLint
-import android.os.CountDownTimer
-import android.view.ViewGroup
-import com.casic.br.R
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.qmuiteam.qmui.util.QMUIDisplayHelper
-import kotlinx.android.synthetic.main.activity_splash.*
-
-@SuppressLint("CustomSplashScreen")
-class SplashScreenActivity : KotlinBaseActivity() {
-
- private lateinit var countDownTimer: CountDownTimer
-
- override fun initLayoutView(): Int = R.layout.activity_splash
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(false).init()
- //根据不同设备状态栏高度设置"跳过"按钮的Margin值
- val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
- val rightMargin = QMUIDisplayHelper.dp2px(this, 10)
- if (skipButton.layoutParams is ViewGroup.MarginLayoutParams) {
- val params = skipButton.layoutParams as ViewGroup.MarginLayoutParams
- params.setMargins(skipButton.width, statusBarHeight, rightMargin, 0)
- skipButton.requestLayout()
- }
- }
-
- override fun initData() {
- countDownTimer = object : CountDownTimer(4000, 1000) {
- override fun onFinish() {
- startMainActivity()
- }
-
- override fun onTick(millisUntilFinished: Long) {
- skipButton.text = String.format("跳过\u3000${(millisUntilFinished / 1000)}s")
- }
- }
- }
-
- override fun observeRequestState() {
-
- }
-
- override fun initEvent() {
- countDownTimer.start()
- skipButton.setChangeAlphaWhenPress(true)
- skipButton.setOnClickListener {
- countDownTimer.cancel()
- startMainActivity()
- }
- }
-
- fun startMainActivity() {
- navigatePageTo()
- finish()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 0aa82f6..e221d61 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -80,7 +80,6 @@
fragmentPages.add(ServicePageFragment())
deviceInstance.registerDevListener(object : TuyaDeviceListener() {
-
override fun onDpUpdate(devId: String?, dpStr: String?) {
Log.d(kTag, "onDpUpdate: $dpStr")
diff --git a/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt b/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
index 36f3838..9afd90b 100644
--- a/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
@@ -5,9 +5,8 @@
import androidx.activity.result.contract.ActivityResultContracts
import com.alibaba.fastjson.JSONObject
import com.casic.br.R
-import com.casic.br.extensions.createCommand
+import com.casic.br.model.TimeConfigModel
import com.casic.br.utils.CommandManager
-import com.casic.br.utils.TuyaDeviceListener
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.convertColor
@@ -15,10 +14,10 @@
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import com.tuya.smart.android.common.utils.Base64
-import com.tuya.smart.android.common.utils.HexUtil
+import com.tuya.smart.android.device.enums.TimerDeviceTypeEnum
import com.tuya.smart.home.sdk.TuyaHomeSdk
-import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaDataCallback
+import com.tuya.smart.sdk.bean.TimerTask
import kotlinx.android.synthetic.main.activity_time_config.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -29,7 +28,6 @@
private val kTag = "TimeConfigActivity"
private lateinit var deviceId: String
- private lateinit var deviceInstance: ITuyaDevice
private var selectedTime: String? = null
private var selectedTemp: String? = null
@@ -49,21 +47,33 @@
override fun initData() {
deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
- deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
- CommandManager.getTuyaDp(deviceInstance, "16")
- deviceInstance.registerDevListener(object : TuyaDeviceListener() {
- override fun onDpUpdate(devId: String?, dpStr: String?) {
- Log.d(kTag, "onDpUpdate: $dpStr")
- val parseObject = JSONObject.parseObject(dpStr)
- parseObject.keys.forEach {
- //{"16":"070009002400120014002400"}
- if (it == "16") {
+ TuyaHomeSdk.getTimerInstance()
+ .getTimerList("预约时间设定", deviceId, TimerDeviceTypeEnum.DEVICE, object :
+ ITuyaDataCallback {
+ override fun onSuccess(result: TimerTask?) {
+ if (result == null) {
+ Log.e(kTag, "预约时间未设定")
+ return
+ }
+ Log.d(kTag, result.toJson())
+ if (result.timerList.isEmpty()) {
+ timeConfigSwitch.isChecked = false
+ } else {
+ timeConfigSwitch.isChecked = result.timerTaskStatus.isOpen
+ val last = result.timerList.last()
+ timeConfigView.text = last.time
+ val parseObject = JSONObject.parseObject(last.value)
+ tempConfigView.text =
+ String.format("水温:${parseObject["16"]}${resources.getString(R.string.temperature_unit)}")
}
}
- }
- })
+
+ override fun onError(errorCode: String?, errorMessage: String?) {
+
+ }
+
+ })
}
private val timeConfigLauncher =
@@ -83,51 +93,54 @@
timeConfigLauncher.launch(Intent(this, AddTimeConfigActivity::class.java))
}
- timeConfigSwitch.setOnCheckedChangeListener { view, isChecked ->
- val status = if (isChecked) {
- 1
+ timeConfigSwitch.setOnClickListener {
+ if (timeConfigSwitch.isChecked) {
+ /**
+ * 循环次数,格式为 0000000,每一位数字的取值可以是
+ * 0:关闭
+ * 1:开启
+ * 从左至右依次表示周日、周一、周二、周三、周四、周五、周六。
+ * 如每个周一循环该任务,则取值为 0100000。
+ * 0000000 表示只执行一次,1111111 表示每天执行。
+ *
+ * 设备功能(dps)的操作任务的 JSON 格式表达方式,格式为 {"dps":{}, "time":""},
+ * 其中 Raw 类型的 DP 需要转换格式,
+ * 转换方式为:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
+ * */
+
+ if (timeConfigView.text.isNullOrBlank() || tempConfigView.text.isNullOrBlank()) {
+ "操作错误!请先设置定时参数".show(this)
+ timeConfigSwitch.isChecked = false
+ return@setOnClickListener
+ }
+
+// val dps = mutableMapOf()
+// dps["16"] = selectedTemp!!
+// val time = mutableMapOf()
+// time["time"] = selectedTime!!
+// val action =
+// "{\"dps\":" + JSONObject.toJSONString(dps) + "," + JSONObject.toJSONString(time)
+// .replace("{", "").replace("}", "") + "}"
+// Log.d(kTag, "action: $action")
+ /**
+ * {"dps":{"16":"36°C"},"time":"10:35"}
+ * */
+ val timeConfig = TimeConfigModel()
+ val dpsModel = TimeConfigModel.DpsModel()
+ dpsModel.`_$16` = selectedTemp!!
+ timeConfig.dps = dpsModel
+ timeConfig.time = selectedTime!!
+
+ CommandManager.addDeviceTimer(
+ "预约时间设定",
+ deviceId,
+ timeConfig.toJson(),
+ "0000000",
+ "热水器"
+ )
} else {
- 0
+ CommandManager.deleteDeviceTimer("预约时间设定", deviceId)
}
-
- /**
- * 循环次数,格式为 0000000,每一位数字的取值可以是
- * 0:关闭
- * 1:开启
- * 从左至右依次表示周日、周一、周二、周三、周四、周五、周六。
- * 如每个周一循环该任务,则取值为 0100000。
- * 0000000 表示只执行一次,1111111 表示每天执行。
- *
- * 设备功能(dps)的操作任务的 JSON 格式表达方式,格式为 {"dps":{}, "time":""},
- * 其中 Raw 类型的 DP 需要转换格式,
- * 转换方式为:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
- * */
-
- if (selectedTime.isNullOrBlank() || selectedTemp.isNullOrBlank()) {
- "请先设置热水器参数".show(this)
- view.isChecked = false
- return@setOnCheckedChangeListener
- }
- val dps = "16".createCommand(selectedTemp!!)
- Log.d(kTag, "dps: $dps")
- val dpsRaw = String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
- val map = HashMap()
- map["dps"] = dpsRaw
- map["time"] = selectedTime!!
- val actions = map.toJson()
-
- //{"dps":{"16":"36°C"}, "time":"9:20"}
- Log.d(kTag, "actions: $actions")
-
- CommandManager.addDeviceTimer(
- "预约时间设定",
- deviceId,
- "{\"dps\":{\"16\":\"36°C\"}, \"time\":\"9:20\"}",
- "0000000",
- "热水器",
- status,
- true
- )
}
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml
deleted file mode 100644
index a84f957..0000000
--- a/app/src/main/res/layout/activity_splash.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxhdpi/splash_background.png b/app/src/main/res/mipmap-xxhdpi/splash_background.png
deleted file mode 100644
index 3fcca9d..0000000
--- a/app/src/main/res/mipmap-xxhdpi/splash_background.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 445738d..1cc04ea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,6 @@
-
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index d5c9eea..2a8c6e9 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -189,10 +189,18 @@
}
"9" -> {//温度设置
-
+ val tempValue = parseObject[it] as Int
+ //转为刻度
+ temperatureSlider.currentProgress = tempValue - minTemp
}
"111" -> {//厨房定时
-
+ val timeValue = parseObject[it]
+ timeScope.forEachIndexed { index, i ->
+ if (i == timeValue) {
+ timeSeekBar.currentProgress = index
+ return@forEach
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
index 62978dc..206fbff 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
@@ -55,6 +55,12 @@
} else {
"0"
}
+ deviceStatusSwitch.isChecked = isDeviceWorking
+ deviceStateView.text = if (isDeviceWorking) {
+ "已开机"
+ } else {
+ "已关机"
+ }
paramObject.put("workStatus", switchStatus)
paramObject.put("switchStatus", switchStatus)
}
@@ -74,6 +80,14 @@
)
paramObject.put("currentTemperature", currentTempView.text)
}
+ "13" -> {
+ deviceStateView.text = when (parseObject[it] as String) {
+ "guanji" -> "已关机"
+ "gongzuozhong" -> "工作中"
+ "guzhang" -> "故障"
+ else -> "已开机"
+ }
+ }
}
}
}
@@ -102,7 +116,6 @@
wifiLayout.visibility = View.GONE
paramObject.put("wifiStatus", "OFF")
}
- deviceStatusSwitch.isChecked = isDeviceWorking
}
override fun observeRequestState() {
diff --git a/app/src/main/java/com/casic/br/model/TimeConfigModel.java b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
new file mode 100644
index 0000000..341388b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
@@ -0,0 +1,38 @@
+package com.casic.br.model;
+
+import com.google.gson.annotations.SerializedName;
+
+public class TimeConfigModel {
+
+ private DpsModel dps;
+ private String time;
+
+ public DpsModel getDps() {
+ return dps;
+ }
+
+ public void setDps(DpsModel dps) {
+ this.dps = dps;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+
+ public static class DpsModel {
+ @SerializedName("16")
+ private String _$16;
+
+ public String get_$16() {
+ return _$16;
+ }
+
+ public void set_$16(String _$16) {
+ this._$16 = _$16;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/utils/CommandManager.kt b/app/src/main/java/com/casic/br/utils/CommandManager.kt
index 60ccad8..b371e13 100644
--- a/app/src/main/java/com/casic/br/utils/CommandManager.kt
+++ b/app/src/main/java/com/casic/br/utils/CommandManager.kt
@@ -4,6 +4,7 @@
import com.tuya.smart.android.device.builder.TuyaTimerBuilder
import com.tuya.smart.android.device.enums.TimerDeviceTypeEnum
import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.constant.TimerUpdateEnum
import com.tuya.smart.sdk.api.IResultCallback
import com.tuya.smart.sdk.api.ITuyaDevice
@@ -35,10 +36,8 @@
})
}
- //TODO 待涂鸦确认
fun addDeviceTimer(
- taskName: String, deviceId: String, dps: String, loops: String, aliasName: String,
- status: Int, appPush: Boolean
+ taskName: String, deviceId: String, dps: String, loops: String, aliasName: String
) {
val builder = TuyaTimerBuilder.Builder()
.taskName(taskName)
@@ -47,12 +46,12 @@
.actions(dps)
.loops(loops)
.aliasName(aliasName)
- .status(status)
- .appPush(appPush)
+ .status(1)
+ .appPush(true)
.build()
TuyaHomeSdk.getTimerInstance().addTimer(builder, object : IResultCallback {
override fun onError(code: String?, error: String?) {
-
+ Log.e(kTag, "code: $code --- onError: $error")
}
override fun onSuccess() {
@@ -60,4 +59,21 @@
}
})
}
+
+ fun deleteDeviceTimer(taskName: String, deviceId: String) {
+ TuyaHomeSdk.getTimerInstance().updateCategoryTimerStatus(
+ taskName,
+ deviceId,
+ TimerDeviceTypeEnum.DEVICE,
+ TimerUpdateEnum.DELETE,
+ object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.e(kTag, "code: $code --- onError: $error")
+ }
+
+ override fun onSuccess() {
+
+ }
+ })
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 1a2a9c8..aa65140 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -26,8 +26,6 @@
}
private fun startSplashScreenActivity() {
- //TODO 不要开屏页
-// navigatePageTo()
navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
deleted file mode 100644
index 4fdf7dd..0000000
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.casic.br.view
-
-import android.annotation.SuppressLint
-import android.os.CountDownTimer
-import android.view.ViewGroup
-import com.casic.br.R
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.qmuiteam.qmui.util.QMUIDisplayHelper
-import kotlinx.android.synthetic.main.activity_splash.*
-
-@SuppressLint("CustomSplashScreen")
-class SplashScreenActivity : KotlinBaseActivity() {
-
- private lateinit var countDownTimer: CountDownTimer
-
- override fun initLayoutView(): Int = R.layout.activity_splash
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(false).init()
- //根据不同设备状态栏高度设置"跳过"按钮的Margin值
- val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
- val rightMargin = QMUIDisplayHelper.dp2px(this, 10)
- if (skipButton.layoutParams is ViewGroup.MarginLayoutParams) {
- val params = skipButton.layoutParams as ViewGroup.MarginLayoutParams
- params.setMargins(skipButton.width, statusBarHeight, rightMargin, 0)
- skipButton.requestLayout()
- }
- }
-
- override fun initData() {
- countDownTimer = object : CountDownTimer(4000, 1000) {
- override fun onFinish() {
- startMainActivity()
- }
-
- override fun onTick(millisUntilFinished: Long) {
- skipButton.text = String.format("跳过\u3000${(millisUntilFinished / 1000)}s")
- }
- }
- }
-
- override fun observeRequestState() {
-
- }
-
- override fun initEvent() {
- countDownTimer.start()
- skipButton.setChangeAlphaWhenPress(true)
- skipButton.setOnClickListener {
- countDownTimer.cancel()
- startMainActivity()
- }
- }
-
- fun startMainActivity() {
- navigatePageTo()
- finish()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 0aa82f6..e221d61 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -80,7 +80,6 @@
fragmentPages.add(ServicePageFragment())
deviceInstance.registerDevListener(object : TuyaDeviceListener() {
-
override fun onDpUpdate(devId: String?, dpStr: String?) {
Log.d(kTag, "onDpUpdate: $dpStr")
diff --git a/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt b/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
index 36f3838..9afd90b 100644
--- a/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
@@ -5,9 +5,8 @@
import androidx.activity.result.contract.ActivityResultContracts
import com.alibaba.fastjson.JSONObject
import com.casic.br.R
-import com.casic.br.extensions.createCommand
+import com.casic.br.model.TimeConfigModel
import com.casic.br.utils.CommandManager
-import com.casic.br.utils.TuyaDeviceListener
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.convertColor
@@ -15,10 +14,10 @@
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import com.tuya.smart.android.common.utils.Base64
-import com.tuya.smart.android.common.utils.HexUtil
+import com.tuya.smart.android.device.enums.TimerDeviceTypeEnum
import com.tuya.smart.home.sdk.TuyaHomeSdk
-import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaDataCallback
+import com.tuya.smart.sdk.bean.TimerTask
import kotlinx.android.synthetic.main.activity_time_config.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -29,7 +28,6 @@
private val kTag = "TimeConfigActivity"
private lateinit var deviceId: String
- private lateinit var deviceInstance: ITuyaDevice
private var selectedTime: String? = null
private var selectedTemp: String? = null
@@ -49,21 +47,33 @@
override fun initData() {
deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
- deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
- CommandManager.getTuyaDp(deviceInstance, "16")
- deviceInstance.registerDevListener(object : TuyaDeviceListener() {
- override fun onDpUpdate(devId: String?, dpStr: String?) {
- Log.d(kTag, "onDpUpdate: $dpStr")
- val parseObject = JSONObject.parseObject(dpStr)
- parseObject.keys.forEach {
- //{"16":"070009002400120014002400"}
- if (it == "16") {
+ TuyaHomeSdk.getTimerInstance()
+ .getTimerList("预约时间设定", deviceId, TimerDeviceTypeEnum.DEVICE, object :
+ ITuyaDataCallback {
+ override fun onSuccess(result: TimerTask?) {
+ if (result == null) {
+ Log.e(kTag, "预约时间未设定")
+ return
+ }
+ Log.d(kTag, result.toJson())
+ if (result.timerList.isEmpty()) {
+ timeConfigSwitch.isChecked = false
+ } else {
+ timeConfigSwitch.isChecked = result.timerTaskStatus.isOpen
+ val last = result.timerList.last()
+ timeConfigView.text = last.time
+ val parseObject = JSONObject.parseObject(last.value)
+ tempConfigView.text =
+ String.format("水温:${parseObject["16"]}${resources.getString(R.string.temperature_unit)}")
}
}
- }
- })
+
+ override fun onError(errorCode: String?, errorMessage: String?) {
+
+ }
+
+ })
}
private val timeConfigLauncher =
@@ -83,51 +93,54 @@
timeConfigLauncher.launch(Intent(this, AddTimeConfigActivity::class.java))
}
- timeConfigSwitch.setOnCheckedChangeListener { view, isChecked ->
- val status = if (isChecked) {
- 1
+ timeConfigSwitch.setOnClickListener {
+ if (timeConfigSwitch.isChecked) {
+ /**
+ * 循环次数,格式为 0000000,每一位数字的取值可以是
+ * 0:关闭
+ * 1:开启
+ * 从左至右依次表示周日、周一、周二、周三、周四、周五、周六。
+ * 如每个周一循环该任务,则取值为 0100000。
+ * 0000000 表示只执行一次,1111111 表示每天执行。
+ *
+ * 设备功能(dps)的操作任务的 JSON 格式表达方式,格式为 {"dps":{}, "time":""},
+ * 其中 Raw 类型的 DP 需要转换格式,
+ * 转换方式为:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
+ * */
+
+ if (timeConfigView.text.isNullOrBlank() || tempConfigView.text.isNullOrBlank()) {
+ "操作错误!请先设置定时参数".show(this)
+ timeConfigSwitch.isChecked = false
+ return@setOnClickListener
+ }
+
+// val dps = mutableMapOf()
+// dps["16"] = selectedTemp!!
+// val time = mutableMapOf()
+// time["time"] = selectedTime!!
+// val action =
+// "{\"dps\":" + JSONObject.toJSONString(dps) + "," + JSONObject.toJSONString(time)
+// .replace("{", "").replace("}", "") + "}"
+// Log.d(kTag, "action: $action")
+ /**
+ * {"dps":{"16":"36°C"},"time":"10:35"}
+ * */
+ val timeConfig = TimeConfigModel()
+ val dpsModel = TimeConfigModel.DpsModel()
+ dpsModel.`_$16` = selectedTemp!!
+ timeConfig.dps = dpsModel
+ timeConfig.time = selectedTime!!
+
+ CommandManager.addDeviceTimer(
+ "预约时间设定",
+ deviceId,
+ timeConfig.toJson(),
+ "0000000",
+ "热水器"
+ )
} else {
- 0
+ CommandManager.deleteDeviceTimer("预约时间设定", deviceId)
}
-
- /**
- * 循环次数,格式为 0000000,每一位数字的取值可以是
- * 0:关闭
- * 1:开启
- * 从左至右依次表示周日、周一、周二、周三、周四、周五、周六。
- * 如每个周一循环该任务,则取值为 0100000。
- * 0000000 表示只执行一次,1111111 表示每天执行。
- *
- * 设备功能(dps)的操作任务的 JSON 格式表达方式,格式为 {"dps":{}, "time":""},
- * 其中 Raw 类型的 DP 需要转换格式,
- * 转换方式为:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
- * */
-
- if (selectedTime.isNullOrBlank() || selectedTemp.isNullOrBlank()) {
- "请先设置热水器参数".show(this)
- view.isChecked = false
- return@setOnCheckedChangeListener
- }
- val dps = "16".createCommand(selectedTemp!!)
- Log.d(kTag, "dps: $dps")
- val dpsRaw = String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
- val map = HashMap()
- map["dps"] = dpsRaw
- map["time"] = selectedTime!!
- val actions = map.toJson()
-
- //{"dps":{"16":"36°C"}, "time":"9:20"}
- Log.d(kTag, "actions: $actions")
-
- CommandManager.addDeviceTimer(
- "预约时间设定",
- deviceId,
- "{\"dps\":{\"16\":\"36°C\"}, \"time\":\"9:20\"}",
- "0000000",
- "热水器",
- status,
- true
- )
}
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml
deleted file mode 100644
index a84f957..0000000
--- a/app/src/main/res/layout/activity_splash.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxhdpi/splash_background.png b/app/src/main/res/mipmap-xxhdpi/splash_background.png
deleted file mode 100644
index 3fcca9d..0000000
--- a/app/src/main/res/mipmap-xxhdpi/splash_background.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/splash_casic.png b/app/src/main/res/mipmap-xxhdpi/splash_casic.png
deleted file mode 100644
index 37c7e47..0000000
--- a/app/src/main/res/mipmap-xxhdpi/splash_casic.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 445738d..1cc04ea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,6 @@
-
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index d5c9eea..2a8c6e9 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -189,10 +189,18 @@
}
"9" -> {//温度设置
-
+ val tempValue = parseObject[it] as Int
+ //转为刻度
+ temperatureSlider.currentProgress = tempValue - minTemp
}
"111" -> {//厨房定时
-
+ val timeValue = parseObject[it]
+ timeScope.forEachIndexed { index, i ->
+ if (i == timeValue) {
+ timeSeekBar.currentProgress = index
+ return@forEach
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
index 62978dc..206fbff 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
@@ -55,6 +55,12 @@
} else {
"0"
}
+ deviceStatusSwitch.isChecked = isDeviceWorking
+ deviceStateView.text = if (isDeviceWorking) {
+ "已开机"
+ } else {
+ "已关机"
+ }
paramObject.put("workStatus", switchStatus)
paramObject.put("switchStatus", switchStatus)
}
@@ -74,6 +80,14 @@
)
paramObject.put("currentTemperature", currentTempView.text)
}
+ "13" -> {
+ deviceStateView.text = when (parseObject[it] as String) {
+ "guanji" -> "已关机"
+ "gongzuozhong" -> "工作中"
+ "guzhang" -> "故障"
+ else -> "已开机"
+ }
+ }
}
}
}
@@ -102,7 +116,6 @@
wifiLayout.visibility = View.GONE
paramObject.put("wifiStatus", "OFF")
}
- deviceStatusSwitch.isChecked = isDeviceWorking
}
override fun observeRequestState() {
diff --git a/app/src/main/java/com/casic/br/model/TimeConfigModel.java b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
new file mode 100644
index 0000000..341388b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
@@ -0,0 +1,38 @@
+package com.casic.br.model;
+
+import com.google.gson.annotations.SerializedName;
+
+public class TimeConfigModel {
+
+ private DpsModel dps;
+ private String time;
+
+ public DpsModel getDps() {
+ return dps;
+ }
+
+ public void setDps(DpsModel dps) {
+ this.dps = dps;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+
+ public static class DpsModel {
+ @SerializedName("16")
+ private String _$16;
+
+ public String get_$16() {
+ return _$16;
+ }
+
+ public void set_$16(String _$16) {
+ this._$16 = _$16;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/utils/CommandManager.kt b/app/src/main/java/com/casic/br/utils/CommandManager.kt
index 60ccad8..b371e13 100644
--- a/app/src/main/java/com/casic/br/utils/CommandManager.kt
+++ b/app/src/main/java/com/casic/br/utils/CommandManager.kt
@@ -4,6 +4,7 @@
import com.tuya.smart.android.device.builder.TuyaTimerBuilder
import com.tuya.smart.android.device.enums.TimerDeviceTypeEnum
import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.constant.TimerUpdateEnum
import com.tuya.smart.sdk.api.IResultCallback
import com.tuya.smart.sdk.api.ITuyaDevice
@@ -35,10 +36,8 @@
})
}
- //TODO 待涂鸦确认
fun addDeviceTimer(
- taskName: String, deviceId: String, dps: String, loops: String, aliasName: String,
- status: Int, appPush: Boolean
+ taskName: String, deviceId: String, dps: String, loops: String, aliasName: String
) {
val builder = TuyaTimerBuilder.Builder()
.taskName(taskName)
@@ -47,12 +46,12 @@
.actions(dps)
.loops(loops)
.aliasName(aliasName)
- .status(status)
- .appPush(appPush)
+ .status(1)
+ .appPush(true)
.build()
TuyaHomeSdk.getTimerInstance().addTimer(builder, object : IResultCallback {
override fun onError(code: String?, error: String?) {
-
+ Log.e(kTag, "code: $code --- onError: $error")
}
override fun onSuccess() {
@@ -60,4 +59,21 @@
}
})
}
+
+ fun deleteDeviceTimer(taskName: String, deviceId: String) {
+ TuyaHomeSdk.getTimerInstance().updateCategoryTimerStatus(
+ taskName,
+ deviceId,
+ TimerDeviceTypeEnum.DEVICE,
+ TimerUpdateEnum.DELETE,
+ object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.e(kTag, "code: $code --- onError: $error")
+ }
+
+ override fun onSuccess() {
+
+ }
+ })
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 1a2a9c8..aa65140 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -26,8 +26,6 @@
}
private fun startSplashScreenActivity() {
- //TODO 不要开屏页
-// navigatePageTo()
navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
deleted file mode 100644
index 4fdf7dd..0000000
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.casic.br.view
-
-import android.annotation.SuppressLint
-import android.os.CountDownTimer
-import android.view.ViewGroup
-import com.casic.br.R
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.qmuiteam.qmui.util.QMUIDisplayHelper
-import kotlinx.android.synthetic.main.activity_splash.*
-
-@SuppressLint("CustomSplashScreen")
-class SplashScreenActivity : KotlinBaseActivity() {
-
- private lateinit var countDownTimer: CountDownTimer
-
- override fun initLayoutView(): Int = R.layout.activity_splash
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(false).init()
- //根据不同设备状态栏高度设置"跳过"按钮的Margin值
- val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
- val rightMargin = QMUIDisplayHelper.dp2px(this, 10)
- if (skipButton.layoutParams is ViewGroup.MarginLayoutParams) {
- val params = skipButton.layoutParams as ViewGroup.MarginLayoutParams
- params.setMargins(skipButton.width, statusBarHeight, rightMargin, 0)
- skipButton.requestLayout()
- }
- }
-
- override fun initData() {
- countDownTimer = object : CountDownTimer(4000, 1000) {
- override fun onFinish() {
- startMainActivity()
- }
-
- override fun onTick(millisUntilFinished: Long) {
- skipButton.text = String.format("跳过\u3000${(millisUntilFinished / 1000)}s")
- }
- }
- }
-
- override fun observeRequestState() {
-
- }
-
- override fun initEvent() {
- countDownTimer.start()
- skipButton.setChangeAlphaWhenPress(true)
- skipButton.setOnClickListener {
- countDownTimer.cancel()
- startMainActivity()
- }
- }
-
- fun startMainActivity() {
- navigatePageTo()
- finish()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 0aa82f6..e221d61 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -80,7 +80,6 @@
fragmentPages.add(ServicePageFragment())
deviceInstance.registerDevListener(object : TuyaDeviceListener() {
-
override fun onDpUpdate(devId: String?, dpStr: String?) {
Log.d(kTag, "onDpUpdate: $dpStr")
diff --git a/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt b/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
index 36f3838..9afd90b 100644
--- a/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
@@ -5,9 +5,8 @@
import androidx.activity.result.contract.ActivityResultContracts
import com.alibaba.fastjson.JSONObject
import com.casic.br.R
-import com.casic.br.extensions.createCommand
+import com.casic.br.model.TimeConfigModel
import com.casic.br.utils.CommandManager
-import com.casic.br.utils.TuyaDeviceListener
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.convertColor
@@ -15,10 +14,10 @@
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import com.tuya.smart.android.common.utils.Base64
-import com.tuya.smart.android.common.utils.HexUtil
+import com.tuya.smart.android.device.enums.TimerDeviceTypeEnum
import com.tuya.smart.home.sdk.TuyaHomeSdk
-import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaDataCallback
+import com.tuya.smart.sdk.bean.TimerTask
import kotlinx.android.synthetic.main.activity_time_config.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -29,7 +28,6 @@
private val kTag = "TimeConfigActivity"
private lateinit var deviceId: String
- private lateinit var deviceInstance: ITuyaDevice
private var selectedTime: String? = null
private var selectedTemp: String? = null
@@ -49,21 +47,33 @@
override fun initData() {
deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
- deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
- CommandManager.getTuyaDp(deviceInstance, "16")
- deviceInstance.registerDevListener(object : TuyaDeviceListener() {
- override fun onDpUpdate(devId: String?, dpStr: String?) {
- Log.d(kTag, "onDpUpdate: $dpStr")
- val parseObject = JSONObject.parseObject(dpStr)
- parseObject.keys.forEach {
- //{"16":"070009002400120014002400"}
- if (it == "16") {
+ TuyaHomeSdk.getTimerInstance()
+ .getTimerList("预约时间设定", deviceId, TimerDeviceTypeEnum.DEVICE, object :
+ ITuyaDataCallback {
+ override fun onSuccess(result: TimerTask?) {
+ if (result == null) {
+ Log.e(kTag, "预约时间未设定")
+ return
+ }
+ Log.d(kTag, result.toJson())
+ if (result.timerList.isEmpty()) {
+ timeConfigSwitch.isChecked = false
+ } else {
+ timeConfigSwitch.isChecked = result.timerTaskStatus.isOpen
+ val last = result.timerList.last()
+ timeConfigView.text = last.time
+ val parseObject = JSONObject.parseObject(last.value)
+ tempConfigView.text =
+ String.format("水温:${parseObject["16"]}${resources.getString(R.string.temperature_unit)}")
}
}
- }
- })
+
+ override fun onError(errorCode: String?, errorMessage: String?) {
+
+ }
+
+ })
}
private val timeConfigLauncher =
@@ -83,51 +93,54 @@
timeConfigLauncher.launch(Intent(this, AddTimeConfigActivity::class.java))
}
- timeConfigSwitch.setOnCheckedChangeListener { view, isChecked ->
- val status = if (isChecked) {
- 1
+ timeConfigSwitch.setOnClickListener {
+ if (timeConfigSwitch.isChecked) {
+ /**
+ * 循环次数,格式为 0000000,每一位数字的取值可以是
+ * 0:关闭
+ * 1:开启
+ * 从左至右依次表示周日、周一、周二、周三、周四、周五、周六。
+ * 如每个周一循环该任务,则取值为 0100000。
+ * 0000000 表示只执行一次,1111111 表示每天执行。
+ *
+ * 设备功能(dps)的操作任务的 JSON 格式表达方式,格式为 {"dps":{}, "time":""},
+ * 其中 Raw 类型的 DP 需要转换格式,
+ * 转换方式为:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
+ * */
+
+ if (timeConfigView.text.isNullOrBlank() || tempConfigView.text.isNullOrBlank()) {
+ "操作错误!请先设置定时参数".show(this)
+ timeConfigSwitch.isChecked = false
+ return@setOnClickListener
+ }
+
+// val dps = mutableMapOf()
+// dps["16"] = selectedTemp!!
+// val time = mutableMapOf()
+// time["time"] = selectedTime!!
+// val action =
+// "{\"dps\":" + JSONObject.toJSONString(dps) + "," + JSONObject.toJSONString(time)
+// .replace("{", "").replace("}", "") + "}"
+// Log.d(kTag, "action: $action")
+ /**
+ * {"dps":{"16":"36°C"},"time":"10:35"}
+ * */
+ val timeConfig = TimeConfigModel()
+ val dpsModel = TimeConfigModel.DpsModel()
+ dpsModel.`_$16` = selectedTemp!!
+ timeConfig.dps = dpsModel
+ timeConfig.time = selectedTime!!
+
+ CommandManager.addDeviceTimer(
+ "预约时间设定",
+ deviceId,
+ timeConfig.toJson(),
+ "0000000",
+ "热水器"
+ )
} else {
- 0
+ CommandManager.deleteDeviceTimer("预约时间设定", deviceId)
}
-
- /**
- * 循环次数,格式为 0000000,每一位数字的取值可以是
- * 0:关闭
- * 1:开启
- * 从左至右依次表示周日、周一、周二、周三、周四、周五、周六。
- * 如每个周一循环该任务,则取值为 0100000。
- * 0000000 表示只执行一次,1111111 表示每天执行。
- *
- * 设备功能(dps)的操作任务的 JSON 格式表达方式,格式为 {"dps":{}, "time":""},
- * 其中 Raw 类型的 DP 需要转换格式,
- * 转换方式为:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
- * */
-
- if (selectedTime.isNullOrBlank() || selectedTemp.isNullOrBlank()) {
- "请先设置热水器参数".show(this)
- view.isChecked = false
- return@setOnCheckedChangeListener
- }
- val dps = "16".createCommand(selectedTemp!!)
- Log.d(kTag, "dps: $dps")
- val dpsRaw = String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
- val map = HashMap()
- map["dps"] = dpsRaw
- map["time"] = selectedTime!!
- val actions = map.toJson()
-
- //{"dps":{"16":"36°C"}, "time":"9:20"}
- Log.d(kTag, "actions: $actions")
-
- CommandManager.addDeviceTimer(
- "预约时间设定",
- deviceId,
- "{\"dps\":{\"16\":\"36°C\"}, \"time\":\"9:20\"}",
- "0000000",
- "热水器",
- status,
- true
- )
}
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml
deleted file mode 100644
index a84f957..0000000
--- a/app/src/main/res/layout/activity_splash.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxhdpi/splash_background.png b/app/src/main/res/mipmap-xxhdpi/splash_background.png
deleted file mode 100644
index 3fcca9d..0000000
--- a/app/src/main/res/mipmap-xxhdpi/splash_background.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/splash_casic.png b/app/src/main/res/mipmap-xxhdpi/splash_casic.png
deleted file mode 100644
index 37c7e47..0000000
--- a/app/src/main/res/mipmap-xxhdpi/splash_casic.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/splash_logo.png b/app/src/main/res/mipmap-xxhdpi/splash_logo.png
deleted file mode 100644
index ac2ba0c..0000000
--- a/app/src/main/res/mipmap-xxhdpi/splash_logo.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 445738d..1cc04ea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,6 @@
-
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index d5c9eea..2a8c6e9 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -189,10 +189,18 @@
}
"9" -> {//温度设置
-
+ val tempValue = parseObject[it] as Int
+ //转为刻度
+ temperatureSlider.currentProgress = tempValue - minTemp
}
"111" -> {//厨房定时
-
+ val timeValue = parseObject[it]
+ timeScope.forEachIndexed { index, i ->
+ if (i == timeValue) {
+ timeSeekBar.currentProgress = index
+ return@forEach
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
index 62978dc..206fbff 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt
@@ -55,6 +55,12 @@
} else {
"0"
}
+ deviceStatusSwitch.isChecked = isDeviceWorking
+ deviceStateView.text = if (isDeviceWorking) {
+ "已开机"
+ } else {
+ "已关机"
+ }
paramObject.put("workStatus", switchStatus)
paramObject.put("switchStatus", switchStatus)
}
@@ -74,6 +80,14 @@
)
paramObject.put("currentTemperature", currentTempView.text)
}
+ "13" -> {
+ deviceStateView.text = when (parseObject[it] as String) {
+ "guanji" -> "已关机"
+ "gongzuozhong" -> "工作中"
+ "guzhang" -> "故障"
+ else -> "已开机"
+ }
+ }
}
}
}
@@ -102,7 +116,6 @@
wifiLayout.visibility = View.GONE
paramObject.put("wifiStatus", "OFF")
}
- deviceStatusSwitch.isChecked = isDeviceWorking
}
override fun observeRequestState() {
diff --git a/app/src/main/java/com/casic/br/model/TimeConfigModel.java b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
new file mode 100644
index 0000000..341388b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/TimeConfigModel.java
@@ -0,0 +1,38 @@
+package com.casic.br.model;
+
+import com.google.gson.annotations.SerializedName;
+
+public class TimeConfigModel {
+
+ private DpsModel dps;
+ private String time;
+
+ public DpsModel getDps() {
+ return dps;
+ }
+
+ public void setDps(DpsModel dps) {
+ this.dps = dps;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+
+ public static class DpsModel {
+ @SerializedName("16")
+ private String _$16;
+
+ public String get_$16() {
+ return _$16;
+ }
+
+ public void set_$16(String _$16) {
+ this._$16 = _$16;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/utils/CommandManager.kt b/app/src/main/java/com/casic/br/utils/CommandManager.kt
index 60ccad8..b371e13 100644
--- a/app/src/main/java/com/casic/br/utils/CommandManager.kt
+++ b/app/src/main/java/com/casic/br/utils/CommandManager.kt
@@ -4,6 +4,7 @@
import com.tuya.smart.android.device.builder.TuyaTimerBuilder
import com.tuya.smart.android.device.enums.TimerDeviceTypeEnum
import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.constant.TimerUpdateEnum
import com.tuya.smart.sdk.api.IResultCallback
import com.tuya.smart.sdk.api.ITuyaDevice
@@ -35,10 +36,8 @@
})
}
- //TODO 待涂鸦确认
fun addDeviceTimer(
- taskName: String, deviceId: String, dps: String, loops: String, aliasName: String,
- status: Int, appPush: Boolean
+ taskName: String, deviceId: String, dps: String, loops: String, aliasName: String
) {
val builder = TuyaTimerBuilder.Builder()
.taskName(taskName)
@@ -47,12 +46,12 @@
.actions(dps)
.loops(loops)
.aliasName(aliasName)
- .status(status)
- .appPush(appPush)
+ .status(1)
+ .appPush(true)
.build()
TuyaHomeSdk.getTimerInstance().addTimer(builder, object : IResultCallback {
override fun onError(code: String?, error: String?) {
-
+ Log.e(kTag, "code: $code --- onError: $error")
}
override fun onSuccess() {
@@ -60,4 +59,21 @@
}
})
}
+
+ fun deleteDeviceTimer(taskName: String, deviceId: String) {
+ TuyaHomeSdk.getTimerInstance().updateCategoryTimerStatus(
+ taskName,
+ deviceId,
+ TimerDeviceTypeEnum.DEVICE,
+ TimerUpdateEnum.DELETE,
+ object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.e(kTag, "code: $code --- onError: $error")
+ }
+
+ override fun onSuccess() {
+
+ }
+ })
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 1a2a9c8..aa65140 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -26,8 +26,6 @@
}
private fun startSplashScreenActivity() {
- //TODO 不要开屏页
-// navigatePageTo()
navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
deleted file mode 100644
index 4fdf7dd..0000000
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.casic.br.view
-
-import android.annotation.SuppressLint
-import android.os.CountDownTimer
-import android.view.ViewGroup
-import com.casic.br.R
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.qmuiteam.qmui.util.QMUIDisplayHelper
-import kotlinx.android.synthetic.main.activity_splash.*
-
-@SuppressLint("CustomSplashScreen")
-class SplashScreenActivity : KotlinBaseActivity() {
-
- private lateinit var countDownTimer: CountDownTimer
-
- override fun initLayoutView(): Int = R.layout.activity_splash
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(false).init()
- //根据不同设备状态栏高度设置"跳过"按钮的Margin值
- val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
- val rightMargin = QMUIDisplayHelper.dp2px(this, 10)
- if (skipButton.layoutParams is ViewGroup.MarginLayoutParams) {
- val params = skipButton.layoutParams as ViewGroup.MarginLayoutParams
- params.setMargins(skipButton.width, statusBarHeight, rightMargin, 0)
- skipButton.requestLayout()
- }
- }
-
- override fun initData() {
- countDownTimer = object : CountDownTimer(4000, 1000) {
- override fun onFinish() {
- startMainActivity()
- }
-
- override fun onTick(millisUntilFinished: Long) {
- skipButton.text = String.format("跳过\u3000${(millisUntilFinished / 1000)}s")
- }
- }
- }
-
- override fun observeRequestState() {
-
- }
-
- override fun initEvent() {
- countDownTimer.start()
- skipButton.setChangeAlphaWhenPress(true)
- skipButton.setOnClickListener {
- countDownTimer.cancel()
- startMainActivity()
- }
- }
-
- fun startMainActivity() {
- navigatePageTo()
- finish()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 0aa82f6..e221d61 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -80,7 +80,6 @@
fragmentPages.add(ServicePageFragment())
deviceInstance.registerDevListener(object : TuyaDeviceListener() {
-
override fun onDpUpdate(devId: String?, dpStr: String?) {
Log.d(kTag, "onDpUpdate: $dpStr")
diff --git a/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt b/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
index 36f3838..9afd90b 100644
--- a/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/waterheater/TimeConfigActivity.kt
@@ -5,9 +5,8 @@
import androidx.activity.result.contract.ActivityResultContracts
import com.alibaba.fastjson.JSONObject
import com.casic.br.R
-import com.casic.br.extensions.createCommand
+import com.casic.br.model.TimeConfigModel
import com.casic.br.utils.CommandManager
-import com.casic.br.utils.TuyaDeviceListener
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.convertColor
@@ -15,10 +14,10 @@
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import com.tuya.smart.android.common.utils.Base64
-import com.tuya.smart.android.common.utils.HexUtil
+import com.tuya.smart.android.device.enums.TimerDeviceTypeEnum
import com.tuya.smart.home.sdk.TuyaHomeSdk
-import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaDataCallback
+import com.tuya.smart.sdk.bean.TimerTask
import kotlinx.android.synthetic.main.activity_time_config.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -29,7 +28,6 @@
private val kTag = "TimeConfigActivity"
private lateinit var deviceId: String
- private lateinit var deviceInstance: ITuyaDevice
private var selectedTime: String? = null
private var selectedTemp: String? = null
@@ -49,21 +47,33 @@
override fun initData() {
deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
- deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
- CommandManager.getTuyaDp(deviceInstance, "16")
- deviceInstance.registerDevListener(object : TuyaDeviceListener() {
- override fun onDpUpdate(devId: String?, dpStr: String?) {
- Log.d(kTag, "onDpUpdate: $dpStr")
- val parseObject = JSONObject.parseObject(dpStr)
- parseObject.keys.forEach {
- //{"16":"070009002400120014002400"}
- if (it == "16") {
+ TuyaHomeSdk.getTimerInstance()
+ .getTimerList("预约时间设定", deviceId, TimerDeviceTypeEnum.DEVICE, object :
+ ITuyaDataCallback {
+ override fun onSuccess(result: TimerTask?) {
+ if (result == null) {
+ Log.e(kTag, "预约时间未设定")
+ return
+ }
+ Log.d(kTag, result.toJson())
+ if (result.timerList.isEmpty()) {
+ timeConfigSwitch.isChecked = false
+ } else {
+ timeConfigSwitch.isChecked = result.timerTaskStatus.isOpen
+ val last = result.timerList.last()
+ timeConfigView.text = last.time
+ val parseObject = JSONObject.parseObject(last.value)
+ tempConfigView.text =
+ String.format("水温:${parseObject["16"]}${resources.getString(R.string.temperature_unit)}")
}
}
- }
- })
+
+ override fun onError(errorCode: String?, errorMessage: String?) {
+
+ }
+
+ })
}
private val timeConfigLauncher =
@@ -83,51 +93,54 @@
timeConfigLauncher.launch(Intent(this, AddTimeConfigActivity::class.java))
}
- timeConfigSwitch.setOnCheckedChangeListener { view, isChecked ->
- val status = if (isChecked) {
- 1
+ timeConfigSwitch.setOnClickListener {
+ if (timeConfigSwitch.isChecked) {
+ /**
+ * 循环次数,格式为 0000000,每一位数字的取值可以是
+ * 0:关闭
+ * 1:开启
+ * 从左至右依次表示周日、周一、周二、周三、周四、周五、周六。
+ * 如每个周一循环该任务,则取值为 0100000。
+ * 0000000 表示只执行一次,1111111 表示每天执行。
+ *
+ * 设备功能(dps)的操作任务的 JSON 格式表达方式,格式为 {"dps":{}, "time":""},
+ * 其中 Raw 类型的 DP 需要转换格式,
+ * 转换方式为:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
+ * */
+
+ if (timeConfigView.text.isNullOrBlank() || tempConfigView.text.isNullOrBlank()) {
+ "操作错误!请先设置定时参数".show(this)
+ timeConfigSwitch.isChecked = false
+ return@setOnClickListener
+ }
+
+// val dps = mutableMapOf()
+// dps["16"] = selectedTemp!!
+// val time = mutableMapOf()
+// time["time"] = selectedTime!!
+// val action =
+// "{\"dps\":" + JSONObject.toJSONString(dps) + "," + JSONObject.toJSONString(time)
+// .replace("{", "").replace("}", "") + "}"
+// Log.d(kTag, "action: $action")
+ /**
+ * {"dps":{"16":"36°C"},"time":"10:35"}
+ * */
+ val timeConfig = TimeConfigModel()
+ val dpsModel = TimeConfigModel.DpsModel()
+ dpsModel.`_$16` = selectedTemp!!
+ timeConfig.dps = dpsModel
+ timeConfig.time = selectedTime!!
+
+ CommandManager.addDeviceTimer(
+ "预约时间设定",
+ deviceId,
+ timeConfig.toJson(),
+ "0000000",
+ "热水器"
+ )
} else {
- 0
+ CommandManager.deleteDeviceTimer("预约时间设定", deviceId)
}
-
- /**
- * 循环次数,格式为 0000000,每一位数字的取值可以是
- * 0:关闭
- * 1:开启
- * 从左至右依次表示周日、周一、周二、周三、周四、周五、周六。
- * 如每个周一循环该任务,则取值为 0100000。
- * 0000000 表示只执行一次,1111111 表示每天执行。
- *
- * 设备功能(dps)的操作任务的 JSON 格式表达方式,格式为 {"dps":{}, "time":""},
- * 其中 Raw 类型的 DP 需要转换格式,
- * 转换方式为:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
- * */
-
- if (selectedTime.isNullOrBlank() || selectedTemp.isNullOrBlank()) {
- "请先设置热水器参数".show(this)
- view.isChecked = false
- return@setOnCheckedChangeListener
- }
- val dps = "16".createCommand(selectedTemp!!)
- Log.d(kTag, "dps: $dps")
- val dpsRaw = String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))
- val map = HashMap()
- map["dps"] = dpsRaw
- map["time"] = selectedTime!!
- val actions = map.toJson()
-
- //{"dps":{"16":"36°C"}, "time":"9:20"}
- Log.d(kTag, "actions: $actions")
-
- CommandManager.addDeviceTimer(
- "预约时间设定",
- deviceId,
- "{\"dps\":{\"16\":\"36°C\"}, \"time\":\"9:20\"}",
- "0000000",
- "热水器",
- status,
- true
- )
}
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml
deleted file mode 100644
index a84f957..0000000
--- a/app/src/main/res/layout/activity_splash.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxhdpi/splash_background.png b/app/src/main/res/mipmap-xxhdpi/splash_background.png
deleted file mode 100644
index 3fcca9d..0000000
--- a/app/src/main/res/mipmap-xxhdpi/splash_background.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/splash_casic.png b/app/src/main/res/mipmap-xxhdpi/splash_casic.png
deleted file mode 100644
index 37c7e47..0000000
--- a/app/src/main/res/mipmap-xxhdpi/splash_casic.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/splash_logo.png b/app/src/main/res/mipmap-xxhdpi/splash_logo.png
deleted file mode 100644
index ac2ba0c..0000000
--- a/app/src/main/res/mipmap-xxhdpi/splash_logo.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/splash_text.png b/app/src/main/res/mipmap-xxhdpi/splash_text.png
deleted file mode 100644
index 4f130d5..0000000
--- a/app/src/main/res/mipmap-xxhdpi/splash_text.png
+++ /dev/null
Binary files differ