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 c2e436b..9cb8058 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,24 @@
import com.tuya.smart.sdk.api.IResultCallback
import com.tuya.smart.sdk.api.ITuyaDevice
+/**
+ * 油烟机
+ *
+ * 设备开关 => 1
+ * 延时开关 => 2
+ * 延时倒计时 => 105
+ * 设备状态 => 11
+ * 灯光开关 => 4
+ * 风速 => 10
+ * 清洁开关 => 101
+ * TODO XX开关 => 102
+ * TODO XXXXX => 103
+ * 巡航开关 => 104
+ * TODO XXXXX => 106
+ * TODO XXXXX => 107
+ * TODO XXXXX => 108
+ */
+
object CommandManager {
private const val kTag = "CommandManager"
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 c2e436b..9cb8058 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,24 @@
import com.tuya.smart.sdk.api.IResultCallback
import com.tuya.smart.sdk.api.ITuyaDevice
+/**
+ * 油烟机
+ *
+ * 设备开关 => 1
+ * 延时开关 => 2
+ * 延时倒计时 => 105
+ * 设备状态 => 11
+ * 灯光开关 => 4
+ * 风速 => 10
+ * 清洁开关 => 101
+ * TODO XX开关 => 102
+ * TODO XXXXX => 103
+ * 巡航开关 => 104
+ * TODO XXXXX => 106
+ * TODO XXXXX => 107
+ * TODO XXXXX => 108
+ */
+
object CommandManager {
private const val kTag = "CommandManager"
diff --git a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
index 4b440ff..5d1b8b2 100644
--- a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
@@ -4,7 +4,6 @@
import com.alibaba.fastjson.JSONObject
import com.bumptech.glide.Glide
import com.casic.br.R
-import com.casic.br.extensions.diffMinute
import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.CommandManager
import com.google.gson.Gson
@@ -79,7 +78,7 @@
}
//开关机
- turnOffButton.setOnClickListener {
+ switchButton.setOnClickListener {
val command = if (isDeviceWorking) {
"{\"1\": false}"
} else {
@@ -103,6 +102,65 @@
CommandManager.sendTuyaDp(deviceInstance, "{\"10\": \"strong\"}")
}
+ //清洁
+ cleanSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"101\": true}")
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"101\": false}")
+ }
+ }
+
+ //照明
+ lightSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"4\": true}")
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"4\": false}")
+ }
+ }
+
+ //巡航
+ cruiseSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"104\": true}")
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"104\": false}")
+ }
+ }
+
+ //延时开关
+ delayTurnOffSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"2\": true}")
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"2\": false}")
+ }
+ }
+
+ //假日通风
+ ventilateSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+
+ } else {
+
+ }
+ }
+
+ //假日通风时长
+ ventilateTimeLayout.setOnClickListener {
+
+ }
+
+ //防倒灌
+ antiPourDownSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+
+ } else {
+
+ }
+ }
+
deviceInstance.registerDevListener(object : IDevListener {
/**
@@ -112,31 +170,53 @@
* @param dpStr 设备发生变动的功能点,为 JSON 字符串,数据格式:{"101": true}
*/
override fun onDpUpdate(devId: String?, dpStr: String?) {
- val parseObject = JSONObject.parseObject(dpStr)
- val key = parseObject.keys.first()
Log.d(kTag, "onDpUpdate: $dpStr")
- when (key) {
- "1" -> {//开关机
- isDeviceWorking = parseObject[key] as Boolean
- deviceStateView.text = if (isDeviceWorking) {
- "已开机"
- } else {
- "已关机"
+ val parseObject = JSONObject.parseObject(dpStr)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ if (isDeviceWorking) {
+ //工作中
+ deviceStateView.text = "已开机"
+ deviceStateButton.text = "关机"
+ } else {
+ //未工作
+ deviceStateView.text = "已关机"
+ deviceStateButton.text = "开机"
+ }
}
- deviceStateButton.text = if (isDeviceWorking) {
- "关机"
- } else {
- "开机"
+ "2" -> {//延时关机状态,{"105":90,"11":"delay","2":true}|{"11":"low","2":false}
+ val isDelay = parseObject[it] as Boolean
+ if (!isDelay) {
+ delayTimeView.text = "已取消"
+ }
+ delayTurnOffSwitch.isChecked = isDelay
}
- }
- "11" -> {//风速,[off, low, middle, high, strong]
+ "4" -> {//照明
+ val isLighting = parseObject[it] as Boolean
+ lightSwitch.isChecked = isLighting
+ }
+ "11" -> {//设备状态,[off, low, middle, high, strong]
- }
- "12" -> {//累计工作时间
- workingTimeView.text = if (isDeviceWorking) {
- "${parseObject[key]}分"
- } else {
- "0分"
+ }
+ "12" -> {//累计工作时间
+ workingTimeView.text = if (isDeviceWorking) {
+ "${parseObject[it]}分"
+ } else {
+ "0分"
+ }
+ }
+ "101" -> {//清洁,{"10":"off","101":true,"11":"wash"}|{"101":false,"11":"off"}
+ val isCleaning = parseObject[it] as Boolean
+ cleanSwitch.isChecked = isCleaning
+ }
+ "104" -> {//巡航
+ val isCruising = parseObject[it] as Boolean
+ cruiseSwitch.isChecked = isCruising
+ }
+ "105" -> {
+ delayTimeView.text = String.format("${parseObject[it].toString()}s")
}
}
}
@@ -182,6 +262,64 @@
})
}
+ private fun configFunctionPanel(
+ isTurnOn: Boolean,
+ isSpeedEnable: Boolean,
+ isCleanEnable: Boolean,
+ isLightEnable: Boolean,
+ isCruiseEnable: Boolean,
+ isDelayEnable: Boolean,
+ isVentilateEnable: Boolean,
+ isVentilateTimeEnable: Boolean,
+ isAntiPourDownEnable: Boolean
+ ) {
+// if (isTurnOn) {
+// switchButtonLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// switchButtonLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isSpeedEnable) {
+// speedLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// speedLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isCleanEnable) {
+// cleanLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// cleanLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isLightEnable) {
+// lightLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// lightLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isCruiseEnable) {
+// cruiseLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//巡航
+// } else {
+// cruiseLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//巡航
+// }
+// if (isDelayEnable) {
+// delayLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// delayLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isVentilateEnable) {
+// ventilateLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//通风
+// } else {
+// ventilateLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//通风
+// }
+// if (isVentilateTimeEnable) {
+// ventilateTimeLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// ventilateTimeLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isAntiPourDownEnable) {
+// antiPourDownLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//防倒灌
+// } else {
+// antiPourDownLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//防倒灌
+// }
+ }
+
override fun onDestroy() {
super.onDestroy()
deviceInstance.unRegisterDevListener()
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 c2e436b..9cb8058 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,24 @@
import com.tuya.smart.sdk.api.IResultCallback
import com.tuya.smart.sdk.api.ITuyaDevice
+/**
+ * 油烟机
+ *
+ * 设备开关 => 1
+ * 延时开关 => 2
+ * 延时倒计时 => 105
+ * 设备状态 => 11
+ * 灯光开关 => 4
+ * 风速 => 10
+ * 清洁开关 => 101
+ * TODO XX开关 => 102
+ * TODO XXXXX => 103
+ * 巡航开关 => 104
+ * TODO XXXXX => 106
+ * TODO XXXXX => 107
+ * TODO XXXXX => 108
+ */
+
object CommandManager {
private const val kTag = "CommandManager"
diff --git a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
index 4b440ff..5d1b8b2 100644
--- a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
@@ -4,7 +4,6 @@
import com.alibaba.fastjson.JSONObject
import com.bumptech.glide.Glide
import com.casic.br.R
-import com.casic.br.extensions.diffMinute
import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.CommandManager
import com.google.gson.Gson
@@ -79,7 +78,7 @@
}
//开关机
- turnOffButton.setOnClickListener {
+ switchButton.setOnClickListener {
val command = if (isDeviceWorking) {
"{\"1\": false}"
} else {
@@ -103,6 +102,65 @@
CommandManager.sendTuyaDp(deviceInstance, "{\"10\": \"strong\"}")
}
+ //清洁
+ cleanSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"101\": true}")
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"101\": false}")
+ }
+ }
+
+ //照明
+ lightSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"4\": true}")
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"4\": false}")
+ }
+ }
+
+ //巡航
+ cruiseSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"104\": true}")
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"104\": false}")
+ }
+ }
+
+ //延时开关
+ delayTurnOffSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"2\": true}")
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"2\": false}")
+ }
+ }
+
+ //假日通风
+ ventilateSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+
+ } else {
+
+ }
+ }
+
+ //假日通风时长
+ ventilateTimeLayout.setOnClickListener {
+
+ }
+
+ //防倒灌
+ antiPourDownSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+
+ } else {
+
+ }
+ }
+
deviceInstance.registerDevListener(object : IDevListener {
/**
@@ -112,31 +170,53 @@
* @param dpStr 设备发生变动的功能点,为 JSON 字符串,数据格式:{"101": true}
*/
override fun onDpUpdate(devId: String?, dpStr: String?) {
- val parseObject = JSONObject.parseObject(dpStr)
- val key = parseObject.keys.first()
Log.d(kTag, "onDpUpdate: $dpStr")
- when (key) {
- "1" -> {//开关机
- isDeviceWorking = parseObject[key] as Boolean
- deviceStateView.text = if (isDeviceWorking) {
- "已开机"
- } else {
- "已关机"
+ val parseObject = JSONObject.parseObject(dpStr)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ if (isDeviceWorking) {
+ //工作中
+ deviceStateView.text = "已开机"
+ deviceStateButton.text = "关机"
+ } else {
+ //未工作
+ deviceStateView.text = "已关机"
+ deviceStateButton.text = "开机"
+ }
}
- deviceStateButton.text = if (isDeviceWorking) {
- "关机"
- } else {
- "开机"
+ "2" -> {//延时关机状态,{"105":90,"11":"delay","2":true}|{"11":"low","2":false}
+ val isDelay = parseObject[it] as Boolean
+ if (!isDelay) {
+ delayTimeView.text = "已取消"
+ }
+ delayTurnOffSwitch.isChecked = isDelay
}
- }
- "11" -> {//风速,[off, low, middle, high, strong]
+ "4" -> {//照明
+ val isLighting = parseObject[it] as Boolean
+ lightSwitch.isChecked = isLighting
+ }
+ "11" -> {//设备状态,[off, low, middle, high, strong]
- }
- "12" -> {//累计工作时间
- workingTimeView.text = if (isDeviceWorking) {
- "${parseObject[key]}分"
- } else {
- "0分"
+ }
+ "12" -> {//累计工作时间
+ workingTimeView.text = if (isDeviceWorking) {
+ "${parseObject[it]}分"
+ } else {
+ "0分"
+ }
+ }
+ "101" -> {//清洁,{"10":"off","101":true,"11":"wash"}|{"101":false,"11":"off"}
+ val isCleaning = parseObject[it] as Boolean
+ cleanSwitch.isChecked = isCleaning
+ }
+ "104" -> {//巡航
+ val isCruising = parseObject[it] as Boolean
+ cruiseSwitch.isChecked = isCruising
+ }
+ "105" -> {
+ delayTimeView.text = String.format("${parseObject[it].toString()}s")
}
}
}
@@ -182,6 +262,64 @@
})
}
+ private fun configFunctionPanel(
+ isTurnOn: Boolean,
+ isSpeedEnable: Boolean,
+ isCleanEnable: Boolean,
+ isLightEnable: Boolean,
+ isCruiseEnable: Boolean,
+ isDelayEnable: Boolean,
+ isVentilateEnable: Boolean,
+ isVentilateTimeEnable: Boolean,
+ isAntiPourDownEnable: Boolean
+ ) {
+// if (isTurnOn) {
+// switchButtonLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// switchButtonLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isSpeedEnable) {
+// speedLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// speedLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isCleanEnable) {
+// cleanLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// cleanLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isLightEnable) {
+// lightLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// lightLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isCruiseEnable) {
+// cruiseLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//巡航
+// } else {
+// cruiseLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//巡航
+// }
+// if (isDelayEnable) {
+// delayLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// delayLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isVentilateEnable) {
+// ventilateLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//通风
+// } else {
+// ventilateLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//通风
+// }
+// if (isVentilateTimeEnable) {
+// ventilateTimeLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// ventilateTimeLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isAntiPourDownEnable) {
+// antiPourDownLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//防倒灌
+// } else {
+// antiPourDownLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//防倒灌
+// }
+ }
+
override fun onDestroy() {
super.onDestroy()
deviceInstance.unRegisterDevListener()
diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml
index 6c7fe93..cc6b725 100644
--- a/app/src/main/res/drawable/switch_background_off.xml
+++ b/app/src/main/res/drawable/switch_background_off.xml
@@ -6,5 +6,5 @@
-
+
\ No newline at end of file
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 c2e436b..9cb8058 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,24 @@
import com.tuya.smart.sdk.api.IResultCallback
import com.tuya.smart.sdk.api.ITuyaDevice
+/**
+ * 油烟机
+ *
+ * 设备开关 => 1
+ * 延时开关 => 2
+ * 延时倒计时 => 105
+ * 设备状态 => 11
+ * 灯光开关 => 4
+ * 风速 => 10
+ * 清洁开关 => 101
+ * TODO XX开关 => 102
+ * TODO XXXXX => 103
+ * 巡航开关 => 104
+ * TODO XXXXX => 106
+ * TODO XXXXX => 107
+ * TODO XXXXX => 108
+ */
+
object CommandManager {
private const val kTag = "CommandManager"
diff --git a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
index 4b440ff..5d1b8b2 100644
--- a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
@@ -4,7 +4,6 @@
import com.alibaba.fastjson.JSONObject
import com.bumptech.glide.Glide
import com.casic.br.R
-import com.casic.br.extensions.diffMinute
import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.CommandManager
import com.google.gson.Gson
@@ -79,7 +78,7 @@
}
//开关机
- turnOffButton.setOnClickListener {
+ switchButton.setOnClickListener {
val command = if (isDeviceWorking) {
"{\"1\": false}"
} else {
@@ -103,6 +102,65 @@
CommandManager.sendTuyaDp(deviceInstance, "{\"10\": \"strong\"}")
}
+ //清洁
+ cleanSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"101\": true}")
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"101\": false}")
+ }
+ }
+
+ //照明
+ lightSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"4\": true}")
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"4\": false}")
+ }
+ }
+
+ //巡航
+ cruiseSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"104\": true}")
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"104\": false}")
+ }
+ }
+
+ //延时开关
+ delayTurnOffSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"2\": true}")
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"2\": false}")
+ }
+ }
+
+ //假日通风
+ ventilateSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+
+ } else {
+
+ }
+ }
+
+ //假日通风时长
+ ventilateTimeLayout.setOnClickListener {
+
+ }
+
+ //防倒灌
+ antiPourDownSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+
+ } else {
+
+ }
+ }
+
deviceInstance.registerDevListener(object : IDevListener {
/**
@@ -112,31 +170,53 @@
* @param dpStr 设备发生变动的功能点,为 JSON 字符串,数据格式:{"101": true}
*/
override fun onDpUpdate(devId: String?, dpStr: String?) {
- val parseObject = JSONObject.parseObject(dpStr)
- val key = parseObject.keys.first()
Log.d(kTag, "onDpUpdate: $dpStr")
- when (key) {
- "1" -> {//开关机
- isDeviceWorking = parseObject[key] as Boolean
- deviceStateView.text = if (isDeviceWorking) {
- "已开机"
- } else {
- "已关机"
+ val parseObject = JSONObject.parseObject(dpStr)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ if (isDeviceWorking) {
+ //工作中
+ deviceStateView.text = "已开机"
+ deviceStateButton.text = "关机"
+ } else {
+ //未工作
+ deviceStateView.text = "已关机"
+ deviceStateButton.text = "开机"
+ }
}
- deviceStateButton.text = if (isDeviceWorking) {
- "关机"
- } else {
- "开机"
+ "2" -> {//延时关机状态,{"105":90,"11":"delay","2":true}|{"11":"low","2":false}
+ val isDelay = parseObject[it] as Boolean
+ if (!isDelay) {
+ delayTimeView.text = "已取消"
+ }
+ delayTurnOffSwitch.isChecked = isDelay
}
- }
- "11" -> {//风速,[off, low, middle, high, strong]
+ "4" -> {//照明
+ val isLighting = parseObject[it] as Boolean
+ lightSwitch.isChecked = isLighting
+ }
+ "11" -> {//设备状态,[off, low, middle, high, strong]
- }
- "12" -> {//累计工作时间
- workingTimeView.text = if (isDeviceWorking) {
- "${parseObject[key]}分"
- } else {
- "0分"
+ }
+ "12" -> {//累计工作时间
+ workingTimeView.text = if (isDeviceWorking) {
+ "${parseObject[it]}分"
+ } else {
+ "0分"
+ }
+ }
+ "101" -> {//清洁,{"10":"off","101":true,"11":"wash"}|{"101":false,"11":"off"}
+ val isCleaning = parseObject[it] as Boolean
+ cleanSwitch.isChecked = isCleaning
+ }
+ "104" -> {//巡航
+ val isCruising = parseObject[it] as Boolean
+ cruiseSwitch.isChecked = isCruising
+ }
+ "105" -> {
+ delayTimeView.text = String.format("${parseObject[it].toString()}s")
}
}
}
@@ -182,6 +262,64 @@
})
}
+ private fun configFunctionPanel(
+ isTurnOn: Boolean,
+ isSpeedEnable: Boolean,
+ isCleanEnable: Boolean,
+ isLightEnable: Boolean,
+ isCruiseEnable: Boolean,
+ isDelayEnable: Boolean,
+ isVentilateEnable: Boolean,
+ isVentilateTimeEnable: Boolean,
+ isAntiPourDownEnable: Boolean
+ ) {
+// if (isTurnOn) {
+// switchButtonLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// switchButtonLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isSpeedEnable) {
+// speedLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// speedLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isCleanEnable) {
+// cleanLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// cleanLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isLightEnable) {
+// lightLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// lightLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isCruiseEnable) {
+// cruiseLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//巡航
+// } else {
+// cruiseLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//巡航
+// }
+// if (isDelayEnable) {
+// delayLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// delayLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isVentilateEnable) {
+// ventilateLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//通风
+// } else {
+// ventilateLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//通风
+// }
+// if (isVentilateTimeEnable) {
+// ventilateTimeLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// ventilateTimeLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isAntiPourDownEnable) {
+// antiPourDownLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//防倒灌
+// } else {
+// antiPourDownLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//防倒灌
+// }
+ }
+
override fun onDestroy() {
super.onDestroy()
deviceInstance.unRegisterDevListener()
diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml
index 6c7fe93..cc6b725 100644
--- a/app/src/main/res/drawable/switch_background_off.xml
+++ b/app/src/main/res/drawable/switch_background_off.xml
@@ -6,5 +6,5 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml
index a05ee78..183c8f6 100644
--- a/app/src/main/res/drawable/switch_circle_off.xml
+++ b/app/src/main/res/drawable/switch_circle_off.xml
@@ -7,7 +7,7 @@
+ android:color="@color/mainBackColor" />
\ No newline at end of file
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 c2e436b..9cb8058 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,24 @@
import com.tuya.smart.sdk.api.IResultCallback
import com.tuya.smart.sdk.api.ITuyaDevice
+/**
+ * 油烟机
+ *
+ * 设备开关 => 1
+ * 延时开关 => 2
+ * 延时倒计时 => 105
+ * 设备状态 => 11
+ * 灯光开关 => 4
+ * 风速 => 10
+ * 清洁开关 => 101
+ * TODO XX开关 => 102
+ * TODO XXXXX => 103
+ * 巡航开关 => 104
+ * TODO XXXXX => 106
+ * TODO XXXXX => 107
+ * TODO XXXXX => 108
+ */
+
object CommandManager {
private const val kTag = "CommandManager"
diff --git a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
index 4b440ff..5d1b8b2 100644
--- a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
@@ -4,7 +4,6 @@
import com.alibaba.fastjson.JSONObject
import com.bumptech.glide.Glide
import com.casic.br.R
-import com.casic.br.extensions.diffMinute
import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.CommandManager
import com.google.gson.Gson
@@ -79,7 +78,7 @@
}
//开关机
- turnOffButton.setOnClickListener {
+ switchButton.setOnClickListener {
val command = if (isDeviceWorking) {
"{\"1\": false}"
} else {
@@ -103,6 +102,65 @@
CommandManager.sendTuyaDp(deviceInstance, "{\"10\": \"strong\"}")
}
+ //清洁
+ cleanSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"101\": true}")
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"101\": false}")
+ }
+ }
+
+ //照明
+ lightSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"4\": true}")
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"4\": false}")
+ }
+ }
+
+ //巡航
+ cruiseSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"104\": true}")
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"104\": false}")
+ }
+ }
+
+ //延时开关
+ delayTurnOffSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"2\": true}")
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "{\"2\": false}")
+ }
+ }
+
+ //假日通风
+ ventilateSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+
+ } else {
+
+ }
+ }
+
+ //假日通风时长
+ ventilateTimeLayout.setOnClickListener {
+
+ }
+
+ //防倒灌
+ antiPourDownSwitch.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+
+ } else {
+
+ }
+ }
+
deviceInstance.registerDevListener(object : IDevListener {
/**
@@ -112,31 +170,53 @@
* @param dpStr 设备发生变动的功能点,为 JSON 字符串,数据格式:{"101": true}
*/
override fun onDpUpdate(devId: String?, dpStr: String?) {
- val parseObject = JSONObject.parseObject(dpStr)
- val key = parseObject.keys.first()
Log.d(kTag, "onDpUpdate: $dpStr")
- when (key) {
- "1" -> {//开关机
- isDeviceWorking = parseObject[key] as Boolean
- deviceStateView.text = if (isDeviceWorking) {
- "已开机"
- } else {
- "已关机"
+ val parseObject = JSONObject.parseObject(dpStr)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ if (isDeviceWorking) {
+ //工作中
+ deviceStateView.text = "已开机"
+ deviceStateButton.text = "关机"
+ } else {
+ //未工作
+ deviceStateView.text = "已关机"
+ deviceStateButton.text = "开机"
+ }
}
- deviceStateButton.text = if (isDeviceWorking) {
- "关机"
- } else {
- "开机"
+ "2" -> {//延时关机状态,{"105":90,"11":"delay","2":true}|{"11":"low","2":false}
+ val isDelay = parseObject[it] as Boolean
+ if (!isDelay) {
+ delayTimeView.text = "已取消"
+ }
+ delayTurnOffSwitch.isChecked = isDelay
}
- }
- "11" -> {//风速,[off, low, middle, high, strong]
+ "4" -> {//照明
+ val isLighting = parseObject[it] as Boolean
+ lightSwitch.isChecked = isLighting
+ }
+ "11" -> {//设备状态,[off, low, middle, high, strong]
- }
- "12" -> {//累计工作时间
- workingTimeView.text = if (isDeviceWorking) {
- "${parseObject[key]}分"
- } else {
- "0分"
+ }
+ "12" -> {//累计工作时间
+ workingTimeView.text = if (isDeviceWorking) {
+ "${parseObject[it]}分"
+ } else {
+ "0分"
+ }
+ }
+ "101" -> {//清洁,{"10":"off","101":true,"11":"wash"}|{"101":false,"11":"off"}
+ val isCleaning = parseObject[it] as Boolean
+ cleanSwitch.isChecked = isCleaning
+ }
+ "104" -> {//巡航
+ val isCruising = parseObject[it] as Boolean
+ cruiseSwitch.isChecked = isCruising
+ }
+ "105" -> {
+ delayTimeView.text = String.format("${parseObject[it].toString()}s")
}
}
}
@@ -182,6 +262,64 @@
})
}
+ private fun configFunctionPanel(
+ isTurnOn: Boolean,
+ isSpeedEnable: Boolean,
+ isCleanEnable: Boolean,
+ isLightEnable: Boolean,
+ isCruiseEnable: Boolean,
+ isDelayEnable: Boolean,
+ isVentilateEnable: Boolean,
+ isVentilateTimeEnable: Boolean,
+ isAntiPourDownEnable: Boolean
+ ) {
+// if (isTurnOn) {
+// switchButtonLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// switchButtonLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isSpeedEnable) {
+// speedLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// speedLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isCleanEnable) {
+// cleanLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// cleanLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isLightEnable) {
+// lightLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// lightLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isCruiseEnable) {
+// cruiseLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//巡航
+// } else {
+// cruiseLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//巡航
+// }
+// if (isDelayEnable) {
+// delayLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// delayLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isVentilateEnable) {
+// ventilateLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//通风
+// } else {
+// ventilateLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//通风
+// }
+// if (isVentilateTimeEnable) {
+// ventilateTimeLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)
+// } else {
+// ventilateTimeLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)
+// }
+// if (isAntiPourDownEnable) {
+// antiPourDownLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//防倒灌
+// } else {
+// antiPourDownLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//防倒灌
+// }
+ }
+
override fun onDestroy() {
super.onDestroy()
deviceInstance.unRegisterDevListener()
diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml
index 6c7fe93..cc6b725 100644
--- a/app/src/main/res/drawable/switch_background_off.xml
+++ b/app/src/main/res/drawable/switch_background_off.xml
@@ -6,5 +6,5 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml
index a05ee78..183c8f6 100644
--- a/app/src/main/res/drawable/switch_circle_off.xml
+++ b/app/src/main/res/drawable/switch_circle_off.xml
@@ -7,7 +7,7 @@
+ android:color="@color/mainBackColor" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_range_hood.xml b/app/src/main/res/layout/activity_range_hood.xml
index 77faeb6..3f7bdaa 100644
--- a/app/src/main/res/layout/activity_range_hood.xml
+++ b/app/src/main/res/layout/activity_range_hood.xml
@@ -1,5 +1,6 @@
-
-
-
-
-
-
-
+ android:layout_height="wrap_content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="match_parent"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:paddingHorizontal="@dimen/dp_10">
-
+ android:src="@mipmap/rsq" />
-
+
+
+
+ android:orientation="horizontal"
+ android:paddingVertical="@dimen/dp_5">
-
+ android:layout_weight="1"
+ android:gravity="center"
+ android:orientation="vertical">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:orientation="vertical">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_marginVertical="@dimen/dp_10">
-
+ android:layout_marginEnd="@dimen/dp_5"
+ android:layout_weight="1"
+ android:background="@drawable/bg_solid_layout_white_radius_10"
+ android:gravity="center_vertical"
+ android:orientation="horizontal"
+ android:paddingHorizontal="@dimen/dp_20"
+ android:paddingVertical="@dimen/dp_10">
-
+
+
+
+
+
+
+
+ android:layout_marginStart="@dimen/dp_5"
+ android:layout_weight="1"
+ android:background="@drawable/bg_solid_layout_white_radius_10"
+ android:gravity="center_vertical"
+ android:orientation="horizontal"
+ android:paddingHorizontal="@dimen/dp_20"
+ android:paddingVertical="@dimen/dp_10">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_marginVertical="@dimen/dp_10"
+ android:background="@drawable/bg_solid_layout_white_radius_10"
+ android:gravity="center_vertical"
+ android:orientation="horizontal"
+ android:paddingHorizontal="@dimen/dp_20"
+ android:paddingVertical="@dimen/dp_10">
+ android:src="@drawable/ic_edit" />
+ android:layout_marginHorizontal="@dimen/dp_5"
+ android:layout_weight="1"
+ android:text="假日通风"
+ android:textSize="@dimen/sp_14" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
\ No newline at end of file