diff --git a/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt index 55600ee..1ec1301 100644 --- a/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt @@ -4,14 +4,17 @@ import android.net.wifi.WifiManager import android.os.Handler import android.view.View +import androidx.lifecycle.ViewModelProvider import com.alibaba.fastjson.JSONObject import com.casic.br.R import com.casic.br.extensions.diffDate +import com.casic.br.vm.DeviceViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.sdk.api.ITuyaDevice import com.tuya.smart.sdk.bean.DeviceBean import kotlinx.android.synthetic.main.fragment_device_cooker_status.* +import java.util.* class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -21,6 +24,9 @@ private val kTag = "StatusPageFragment" private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } + private val paramObject by lazy { org.json.JSONObject() }//数据Json对象 + private val dataTimer by lazy { Timer() }//数据上传Timer + private lateinit var deviceViewModel: DeviceViewModel override fun initLayoutView(): Int = R.layout.fragment_device_cooker_status @@ -34,6 +40,7 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] } private val callback = Handler.Callback { message -> @@ -50,6 +57,7 @@ "high" -> "猛火" else -> "已关火" } + paramObject.put("leftWorkStatus", leftCookerStateView.text) } "2" -> {//soft, low, medium, high rightCookerStateView.text = when (parseObject[it] as String) { @@ -59,12 +67,20 @@ "high" -> "猛火" else -> "已关火" } + paramObject.put("rightWorkStatus", rightCookerStateView.text) } "11" -> { workingTimeView.text = String.format("${parseObject[it] as Int}min") + paramObject.put("runTime", workingTimeView.text) } "101" -> { yzStatusSwitch.isChecked = parseObject[it] as Boolean + val smokeStove = if (yzStatusSwitch.isChecked) { + "1" + } else { + "0" + } + paramObject.put("smokeStove", smokeStove) } } } @@ -73,13 +89,23 @@ val deviceBean = message.obj as DeviceBean deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") ipAddressView.text = deviceBean.ip + + paramObject.put("usageTime", deviceUsedTimeView.text) + paramObject.put("deviceId", deviceBean.devId) } } true } override fun initEvent() { - + //每隔5s传一次数据到服务器 + dataTimer.schedule(object : TimerTask() { + override fun run() { + val obj = org.json.JSONObject() + obj.put("gasStoveInfo", paramObject) + deviceViewModel.addDeviceData(obj) + } + }, 0, 5000) } override fun onResume() { @@ -88,8 +114,12 @@ if (wifiStatusSwitch.isChecked) { wifiLayout.visibility = View.VISIBLE wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + + paramObject.put("wifiStatus", "ON") + paramObject.put("wifiName", wifiNameView.text) } else { wifiLayout.visibility = View.GONE + paramObject.put("wifiStatus", "OFF") } } @@ -97,5 +127,6 @@ super.onDestroy() deviceInstance.unRegisterDevListener() deviceInstance.onDestroy() + dataTimer.cancel() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt index 55600ee..1ec1301 100644 --- a/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt @@ -4,14 +4,17 @@ import android.net.wifi.WifiManager import android.os.Handler import android.view.View +import androidx.lifecycle.ViewModelProvider import com.alibaba.fastjson.JSONObject import com.casic.br.R import com.casic.br.extensions.diffDate +import com.casic.br.vm.DeviceViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.sdk.api.ITuyaDevice import com.tuya.smart.sdk.bean.DeviceBean import kotlinx.android.synthetic.main.fragment_device_cooker_status.* +import java.util.* class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -21,6 +24,9 @@ private val kTag = "StatusPageFragment" private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } + private val paramObject by lazy { org.json.JSONObject() }//数据Json对象 + private val dataTimer by lazy { Timer() }//数据上传Timer + private lateinit var deviceViewModel: DeviceViewModel override fun initLayoutView(): Int = R.layout.fragment_device_cooker_status @@ -34,6 +40,7 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] } private val callback = Handler.Callback { message -> @@ -50,6 +57,7 @@ "high" -> "猛火" else -> "已关火" } + paramObject.put("leftWorkStatus", leftCookerStateView.text) } "2" -> {//soft, low, medium, high rightCookerStateView.text = when (parseObject[it] as String) { @@ -59,12 +67,20 @@ "high" -> "猛火" else -> "已关火" } + paramObject.put("rightWorkStatus", rightCookerStateView.text) } "11" -> { workingTimeView.text = String.format("${parseObject[it] as Int}min") + paramObject.put("runTime", workingTimeView.text) } "101" -> { yzStatusSwitch.isChecked = parseObject[it] as Boolean + val smokeStove = if (yzStatusSwitch.isChecked) { + "1" + } else { + "0" + } + paramObject.put("smokeStove", smokeStove) } } } @@ -73,13 +89,23 @@ val deviceBean = message.obj as DeviceBean deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") ipAddressView.text = deviceBean.ip + + paramObject.put("usageTime", deviceUsedTimeView.text) + paramObject.put("deviceId", deviceBean.devId) } } true } override fun initEvent() { - + //每隔5s传一次数据到服务器 + dataTimer.schedule(object : TimerTask() { + override fun run() { + val obj = org.json.JSONObject() + obj.put("gasStoveInfo", paramObject) + deviceViewModel.addDeviceData(obj) + } + }, 0, 5000) } override fun onResume() { @@ -88,8 +114,12 @@ if (wifiStatusSwitch.isChecked) { wifiLayout.visibility = View.VISIBLE wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + + paramObject.put("wifiStatus", "ON") + paramObject.put("wifiName", wifiNameView.text) } else { wifiLayout.visibility = View.GONE + paramObject.put("wifiStatus", "OFF") } } @@ -97,5 +127,6 @@ super.onDestroy() deviceInstance.unRegisterDevListener() deviceInstance.onDestroy() + dataTimer.cancel() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt index 08e466b..4b983f3 100644 --- a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt @@ -4,14 +4,17 @@ import android.net.wifi.WifiManager import android.os.Handler import android.view.View +import androidx.lifecycle.ViewModelProvider import com.alibaba.fastjson.JSONObject import com.casic.br.R import com.casic.br.extensions.diffDate +import com.casic.br.vm.DeviceViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.sdk.api.ITuyaDevice import com.tuya.smart.sdk.bean.DeviceBean import kotlinx.android.synthetic.main.fragment_device_fireplace_status.* +import java.util.* class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -22,6 +25,9 @@ private val kTag = "StatusPageFragment" private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } private var isDeviceWorking = false + private val paramObject by lazy { org.json.JSONObject() }//数据Json对象 + private val dataTimer by lazy { Timer() }//数据上传Timer + private lateinit var deviceViewModel: DeviceViewModel override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_status @@ -35,6 +41,7 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] } private val callback = Handler.Callback { message -> @@ -45,6 +52,12 @@ when (it) { "1" -> {//开关机 isDeviceWorking = parseObject[it] as Boolean + val workStatus = if (isDeviceWorking) { + "1" + } else { + "0" + } + paramObject.put("workStatus", workStatus) } "4" -> { showerTempView.text = String.format( @@ -52,6 +65,7 @@ requireContext().resources.getString(R.string.temperature_unit) }" ) + paramObject.put("bathroomTemp", showerTempView.text) } "6" -> { heaterTempView.text = String.format( @@ -59,40 +73,51 @@ requireContext().resources.getString(R.string.temperature_unit) }" ) + paramObject.put("heatingTemp", heaterTempView.text) } "10" -> { - heaterStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + heaterStateView.text = "已开启" + paramObject.put("heatingStatus", "1") } else { - "已关闭" + heaterStateView.text = "已关闭" + paramObject.put("heatingStatus", "0") } } "11" -> { - showerStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + showerStateView.text = "已开启" + paramObject.put("bathroomStatus", "1") } else { - "已关闭" + showerStateView.text = "已关闭" + paramObject.put("bathroomStatus", "0") } } "103" -> { - antifreezeStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + antifreezeStateView.text = "已开启" + paramObject.put("antifreezeStatus", "1") } else { - "已关闭" + antifreezeStateView.text = "已关闭" + paramObject.put("antifreezeStatus", "0") } } "102" -> { - ventilatorStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + ventilatorStateView.text = "已开启" + paramObject.put("fanStatus", "1") } else { - "已关闭" + ventilatorStateView.text = "已关闭" + paramObject.put("fanStatus", "0") } } "101" -> { - pumpStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + pumpStateView.text = "已开启" + paramObject.put("fanStatus", "1") } else { - "已关闭" + pumpStateView.text = "已关闭" + paramObject.put("fanStatus", "0") } } } @@ -102,13 +127,23 @@ val deviceBean = message.obj as DeviceBean deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") ipAddressView.text = deviceBean.ip + + paramObject.put("usageTime", deviceUsedTimeView.text) + paramObject.put("deviceId", deviceBean.devId) } } true } override fun initEvent() { - + //每隔5s传一次数据到服务器 + dataTimer.schedule(object : TimerTask() { + override fun run() { + val obj = org.json.JSONObject() + obj.put("hangingFurnaceInfo", paramObject) + deviceViewModel.addDeviceData(obj) + } + }, 0, 5000) } override fun onResume() { @@ -117,8 +152,12 @@ if (wifiStatusSwitch.isChecked) { wifiLayout.visibility = View.VISIBLE wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + + paramObject.put("wifiStatus", "ON") + paramObject.put("wifiName", wifiNameView.text) } else { wifiLayout.visibility = View.GONE + paramObject.put("wifiStatus", "OFF") } deviceStateView.text = if (!isDeviceWorking) { "已关机" @@ -131,5 +170,6 @@ super.onDestroy() deviceInstance.unRegisterDevListener() deviceInstance.onDestroy() + dataTimer.cancel() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt index 55600ee..1ec1301 100644 --- a/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt @@ -4,14 +4,17 @@ import android.net.wifi.WifiManager import android.os.Handler import android.view.View +import androidx.lifecycle.ViewModelProvider import com.alibaba.fastjson.JSONObject import com.casic.br.R import com.casic.br.extensions.diffDate +import com.casic.br.vm.DeviceViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.sdk.api.ITuyaDevice import com.tuya.smart.sdk.bean.DeviceBean import kotlinx.android.synthetic.main.fragment_device_cooker_status.* +import java.util.* class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -21,6 +24,9 @@ private val kTag = "StatusPageFragment" private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } + private val paramObject by lazy { org.json.JSONObject() }//数据Json对象 + private val dataTimer by lazy { Timer() }//数据上传Timer + private lateinit var deviceViewModel: DeviceViewModel override fun initLayoutView(): Int = R.layout.fragment_device_cooker_status @@ -34,6 +40,7 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] } private val callback = Handler.Callback { message -> @@ -50,6 +57,7 @@ "high" -> "猛火" else -> "已关火" } + paramObject.put("leftWorkStatus", leftCookerStateView.text) } "2" -> {//soft, low, medium, high rightCookerStateView.text = when (parseObject[it] as String) { @@ -59,12 +67,20 @@ "high" -> "猛火" else -> "已关火" } + paramObject.put("rightWorkStatus", rightCookerStateView.text) } "11" -> { workingTimeView.text = String.format("${parseObject[it] as Int}min") + paramObject.put("runTime", workingTimeView.text) } "101" -> { yzStatusSwitch.isChecked = parseObject[it] as Boolean + val smokeStove = if (yzStatusSwitch.isChecked) { + "1" + } else { + "0" + } + paramObject.put("smokeStove", smokeStove) } } } @@ -73,13 +89,23 @@ val deviceBean = message.obj as DeviceBean deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") ipAddressView.text = deviceBean.ip + + paramObject.put("usageTime", deviceUsedTimeView.text) + paramObject.put("deviceId", deviceBean.devId) } } true } override fun initEvent() { - + //每隔5s传一次数据到服务器 + dataTimer.schedule(object : TimerTask() { + override fun run() { + val obj = org.json.JSONObject() + obj.put("gasStoveInfo", paramObject) + deviceViewModel.addDeviceData(obj) + } + }, 0, 5000) } override fun onResume() { @@ -88,8 +114,12 @@ if (wifiStatusSwitch.isChecked) { wifiLayout.visibility = View.VISIBLE wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + + paramObject.put("wifiStatus", "ON") + paramObject.put("wifiName", wifiNameView.text) } else { wifiLayout.visibility = View.GONE + paramObject.put("wifiStatus", "OFF") } } @@ -97,5 +127,6 @@ super.onDestroy() deviceInstance.unRegisterDevListener() deviceInstance.onDestroy() + dataTimer.cancel() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt index 08e466b..4b983f3 100644 --- a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt @@ -4,14 +4,17 @@ import android.net.wifi.WifiManager import android.os.Handler import android.view.View +import androidx.lifecycle.ViewModelProvider import com.alibaba.fastjson.JSONObject import com.casic.br.R import com.casic.br.extensions.diffDate +import com.casic.br.vm.DeviceViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.sdk.api.ITuyaDevice import com.tuya.smart.sdk.bean.DeviceBean import kotlinx.android.synthetic.main.fragment_device_fireplace_status.* +import java.util.* class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -22,6 +25,9 @@ private val kTag = "StatusPageFragment" private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } private var isDeviceWorking = false + private val paramObject by lazy { org.json.JSONObject() }//数据Json对象 + private val dataTimer by lazy { Timer() }//数据上传Timer + private lateinit var deviceViewModel: DeviceViewModel override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_status @@ -35,6 +41,7 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] } private val callback = Handler.Callback { message -> @@ -45,6 +52,12 @@ when (it) { "1" -> {//开关机 isDeviceWorking = parseObject[it] as Boolean + val workStatus = if (isDeviceWorking) { + "1" + } else { + "0" + } + paramObject.put("workStatus", workStatus) } "4" -> { showerTempView.text = String.format( @@ -52,6 +65,7 @@ requireContext().resources.getString(R.string.temperature_unit) }" ) + paramObject.put("bathroomTemp", showerTempView.text) } "6" -> { heaterTempView.text = String.format( @@ -59,40 +73,51 @@ requireContext().resources.getString(R.string.temperature_unit) }" ) + paramObject.put("heatingTemp", heaterTempView.text) } "10" -> { - heaterStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + heaterStateView.text = "已开启" + paramObject.put("heatingStatus", "1") } else { - "已关闭" + heaterStateView.text = "已关闭" + paramObject.put("heatingStatus", "0") } } "11" -> { - showerStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + showerStateView.text = "已开启" + paramObject.put("bathroomStatus", "1") } else { - "已关闭" + showerStateView.text = "已关闭" + paramObject.put("bathroomStatus", "0") } } "103" -> { - antifreezeStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + antifreezeStateView.text = "已开启" + paramObject.put("antifreezeStatus", "1") } else { - "已关闭" + antifreezeStateView.text = "已关闭" + paramObject.put("antifreezeStatus", "0") } } "102" -> { - ventilatorStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + ventilatorStateView.text = "已开启" + paramObject.put("fanStatus", "1") } else { - "已关闭" + ventilatorStateView.text = "已关闭" + paramObject.put("fanStatus", "0") } } "101" -> { - pumpStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + pumpStateView.text = "已开启" + paramObject.put("fanStatus", "1") } else { - "已关闭" + pumpStateView.text = "已关闭" + paramObject.put("fanStatus", "0") } } } @@ -102,13 +127,23 @@ val deviceBean = message.obj as DeviceBean deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") ipAddressView.text = deviceBean.ip + + paramObject.put("usageTime", deviceUsedTimeView.text) + paramObject.put("deviceId", deviceBean.devId) } } true } override fun initEvent() { - + //每隔5s传一次数据到服务器 + dataTimer.schedule(object : TimerTask() { + override fun run() { + val obj = org.json.JSONObject() + obj.put("hangingFurnaceInfo", paramObject) + deviceViewModel.addDeviceData(obj) + } + }, 0, 5000) } override fun onResume() { @@ -117,8 +152,12 @@ if (wifiStatusSwitch.isChecked) { wifiLayout.visibility = View.VISIBLE wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + + paramObject.put("wifiStatus", "ON") + paramObject.put("wifiName", wifiNameView.text) } else { wifiLayout.visibility = View.GONE + paramObject.put("wifiStatus", "OFF") } deviceStateView.text = if (!isDeviceWorking) { "已关机" @@ -131,5 +170,6 @@ super.onDestroy() deviceInstance.unRegisterDevListener() deviceInstance.onDestroy() + dataTimer.cancel() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/StatusPageFragment.kt index ed32f72..aa30006 100644 --- a/app/src/main/java/com/casic/br/fragment/rangehood/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/rangehood/StatusPageFragment.kt @@ -92,8 +92,7 @@ paramObject.put("switchStatus", switchStatus) } "11" -> {//设备状态,[off, low, high, strong, air, fangdaoguan, wash, delay, xunhang] - val status = parseObject[it] as String - deviceStateView.text = when (status) { + deviceStateView.text = when (parseObject[it] as String) { "low" -> "低档" "high" -> "高档" "strong" -> "爆炒" @@ -104,7 +103,7 @@ "xunhang" -> "巡航" else -> "OFF" } - paramObject.put("workStatus", status) + paramObject.put("workStatus", deviceStateView.text) } "12" -> {//累计工作时间 workingTimeView.text = if (isDeviceWorking) { @@ -115,32 +114,22 @@ paramObject.put("runTime", workingTimeView.text) } "106" -> {//烟灶联动 - val isLinkage = parseObject[it] as Boolean - linkageView.text = if (isLinkage) { - "开" + if (parseObject[it] as Boolean) { + linkageView.text = "开" + paramObject.put("smokeStove", "1") } else { - "关" + linkageView.text = "关" + paramObject.put("smokeStove", "0") } - val smokeStove = if (isLinkage) { - "1" - } else { - "0" - } - paramObject.put("smokeStove", smokeStove) } "107" -> {//倒油提醒 - val isPourOil = parseObject[it] as Boolean - pourOilView.text = if (isPourOil) { - "开" + if (parseObject[it] as Boolean) { + pourOilView.text = "开" + paramObject.put("oilPouringReminder", "1") } else { - "关" + pourOilView.text = "关" + paramObject.put("oilPouringReminder", "0") } - val oilPouringReminder = if (isPourOil) { - "1" - } else { - "0" - } - paramObject.put("oilPouringReminder", oilPouringReminder) } } } @@ -161,5 +150,6 @@ super.onDestroy() deviceInstance.unRegisterDevListener() deviceInstance.onDestroy() + dataTimer.cancel() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt index 55600ee..1ec1301 100644 --- a/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt @@ -4,14 +4,17 @@ import android.net.wifi.WifiManager import android.os.Handler import android.view.View +import androidx.lifecycle.ViewModelProvider import com.alibaba.fastjson.JSONObject import com.casic.br.R import com.casic.br.extensions.diffDate +import com.casic.br.vm.DeviceViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.sdk.api.ITuyaDevice import com.tuya.smart.sdk.bean.DeviceBean import kotlinx.android.synthetic.main.fragment_device_cooker_status.* +import java.util.* class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -21,6 +24,9 @@ private val kTag = "StatusPageFragment" private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } + private val paramObject by lazy { org.json.JSONObject() }//数据Json对象 + private val dataTimer by lazy { Timer() }//数据上传Timer + private lateinit var deviceViewModel: DeviceViewModel override fun initLayoutView(): Int = R.layout.fragment_device_cooker_status @@ -34,6 +40,7 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] } private val callback = Handler.Callback { message -> @@ -50,6 +57,7 @@ "high" -> "猛火" else -> "已关火" } + paramObject.put("leftWorkStatus", leftCookerStateView.text) } "2" -> {//soft, low, medium, high rightCookerStateView.text = when (parseObject[it] as String) { @@ -59,12 +67,20 @@ "high" -> "猛火" else -> "已关火" } + paramObject.put("rightWorkStatus", rightCookerStateView.text) } "11" -> { workingTimeView.text = String.format("${parseObject[it] as Int}min") + paramObject.put("runTime", workingTimeView.text) } "101" -> { yzStatusSwitch.isChecked = parseObject[it] as Boolean + val smokeStove = if (yzStatusSwitch.isChecked) { + "1" + } else { + "0" + } + paramObject.put("smokeStove", smokeStove) } } } @@ -73,13 +89,23 @@ val deviceBean = message.obj as DeviceBean deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") ipAddressView.text = deviceBean.ip + + paramObject.put("usageTime", deviceUsedTimeView.text) + paramObject.put("deviceId", deviceBean.devId) } } true } override fun initEvent() { - + //每隔5s传一次数据到服务器 + dataTimer.schedule(object : TimerTask() { + override fun run() { + val obj = org.json.JSONObject() + obj.put("gasStoveInfo", paramObject) + deviceViewModel.addDeviceData(obj) + } + }, 0, 5000) } override fun onResume() { @@ -88,8 +114,12 @@ if (wifiStatusSwitch.isChecked) { wifiLayout.visibility = View.VISIBLE wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + + paramObject.put("wifiStatus", "ON") + paramObject.put("wifiName", wifiNameView.text) } else { wifiLayout.visibility = View.GONE + paramObject.put("wifiStatus", "OFF") } } @@ -97,5 +127,6 @@ super.onDestroy() deviceInstance.unRegisterDevListener() deviceInstance.onDestroy() + dataTimer.cancel() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt index 08e466b..4b983f3 100644 --- a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt @@ -4,14 +4,17 @@ import android.net.wifi.WifiManager import android.os.Handler import android.view.View +import androidx.lifecycle.ViewModelProvider import com.alibaba.fastjson.JSONObject import com.casic.br.R import com.casic.br.extensions.diffDate +import com.casic.br.vm.DeviceViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.sdk.api.ITuyaDevice import com.tuya.smart.sdk.bean.DeviceBean import kotlinx.android.synthetic.main.fragment_device_fireplace_status.* +import java.util.* class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -22,6 +25,9 @@ private val kTag = "StatusPageFragment" private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } private var isDeviceWorking = false + private val paramObject by lazy { org.json.JSONObject() }//数据Json对象 + private val dataTimer by lazy { Timer() }//数据上传Timer + private lateinit var deviceViewModel: DeviceViewModel override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_status @@ -35,6 +41,7 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] } private val callback = Handler.Callback { message -> @@ -45,6 +52,12 @@ when (it) { "1" -> {//开关机 isDeviceWorking = parseObject[it] as Boolean + val workStatus = if (isDeviceWorking) { + "1" + } else { + "0" + } + paramObject.put("workStatus", workStatus) } "4" -> { showerTempView.text = String.format( @@ -52,6 +65,7 @@ requireContext().resources.getString(R.string.temperature_unit) }" ) + paramObject.put("bathroomTemp", showerTempView.text) } "6" -> { heaterTempView.text = String.format( @@ -59,40 +73,51 @@ requireContext().resources.getString(R.string.temperature_unit) }" ) + paramObject.put("heatingTemp", heaterTempView.text) } "10" -> { - heaterStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + heaterStateView.text = "已开启" + paramObject.put("heatingStatus", "1") } else { - "已关闭" + heaterStateView.text = "已关闭" + paramObject.put("heatingStatus", "0") } } "11" -> { - showerStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + showerStateView.text = "已开启" + paramObject.put("bathroomStatus", "1") } else { - "已关闭" + showerStateView.text = "已关闭" + paramObject.put("bathroomStatus", "0") } } "103" -> { - antifreezeStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + antifreezeStateView.text = "已开启" + paramObject.put("antifreezeStatus", "1") } else { - "已关闭" + antifreezeStateView.text = "已关闭" + paramObject.put("antifreezeStatus", "0") } } "102" -> { - ventilatorStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + ventilatorStateView.text = "已开启" + paramObject.put("fanStatus", "1") } else { - "已关闭" + ventilatorStateView.text = "已关闭" + paramObject.put("fanStatus", "0") } } "101" -> { - pumpStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + pumpStateView.text = "已开启" + paramObject.put("fanStatus", "1") } else { - "已关闭" + pumpStateView.text = "已关闭" + paramObject.put("fanStatus", "0") } } } @@ -102,13 +127,23 @@ val deviceBean = message.obj as DeviceBean deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") ipAddressView.text = deviceBean.ip + + paramObject.put("usageTime", deviceUsedTimeView.text) + paramObject.put("deviceId", deviceBean.devId) } } true } override fun initEvent() { - + //每隔5s传一次数据到服务器 + dataTimer.schedule(object : TimerTask() { + override fun run() { + val obj = org.json.JSONObject() + obj.put("hangingFurnaceInfo", paramObject) + deviceViewModel.addDeviceData(obj) + } + }, 0, 5000) } override fun onResume() { @@ -117,8 +152,12 @@ if (wifiStatusSwitch.isChecked) { wifiLayout.visibility = View.VISIBLE wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + + paramObject.put("wifiStatus", "ON") + paramObject.put("wifiName", wifiNameView.text) } else { wifiLayout.visibility = View.GONE + paramObject.put("wifiStatus", "OFF") } deviceStateView.text = if (!isDeviceWorking) { "已关机" @@ -131,5 +170,6 @@ super.onDestroy() deviceInstance.unRegisterDevListener() deviceInstance.onDestroy() + dataTimer.cancel() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/StatusPageFragment.kt index ed32f72..aa30006 100644 --- a/app/src/main/java/com/casic/br/fragment/rangehood/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/rangehood/StatusPageFragment.kt @@ -92,8 +92,7 @@ paramObject.put("switchStatus", switchStatus) } "11" -> {//设备状态,[off, low, high, strong, air, fangdaoguan, wash, delay, xunhang] - val status = parseObject[it] as String - deviceStateView.text = when (status) { + deviceStateView.text = when (parseObject[it] as String) { "low" -> "低档" "high" -> "高档" "strong" -> "爆炒" @@ -104,7 +103,7 @@ "xunhang" -> "巡航" else -> "OFF" } - paramObject.put("workStatus", status) + paramObject.put("workStatus", deviceStateView.text) } "12" -> {//累计工作时间 workingTimeView.text = if (isDeviceWorking) { @@ -115,32 +114,22 @@ paramObject.put("runTime", workingTimeView.text) } "106" -> {//烟灶联动 - val isLinkage = parseObject[it] as Boolean - linkageView.text = if (isLinkage) { - "开" + if (parseObject[it] as Boolean) { + linkageView.text = "开" + paramObject.put("smokeStove", "1") } else { - "关" + linkageView.text = "关" + paramObject.put("smokeStove", "0") } - val smokeStove = if (isLinkage) { - "1" - } else { - "0" - } - paramObject.put("smokeStove", smokeStove) } "107" -> {//倒油提醒 - val isPourOil = parseObject[it] as Boolean - pourOilView.text = if (isPourOil) { - "开" + if (parseObject[it] as Boolean) { + pourOilView.text = "开" + paramObject.put("oilPouringReminder", "1") } else { - "关" + pourOilView.text = "关" + paramObject.put("oilPouringReminder", "0") } - val oilPouringReminder = if (isPourOil) { - "1" - } else { - "0" - } - paramObject.put("oilPouringReminder", oilPouringReminder) } } } @@ -161,5 +150,6 @@ super.onDestroy() deviceInstance.unRegisterDevListener() deviceInstance.onDestroy() + dataTimer.cancel() } } \ No newline at end of file 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 2f76b75..62978dc 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 @@ -4,14 +4,19 @@ import android.net.wifi.WifiManager import android.os.Handler import android.view.View +import androidx.lifecycle.ViewModelProvider import com.alibaba.fastjson.JSONObject import com.casic.br.R import com.casic.br.extensions.diffDate +import com.casic.br.utils.CommandManager +import com.casic.br.utils.TuyaDeviceListener +import com.casic.br.vm.DeviceViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.sdk.api.ITuyaDevice import com.tuya.smart.sdk.bean.DeviceBean import kotlinx.android.synthetic.main.fragment_device_waterheater_status.* +import java.util.* class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -22,6 +27,9 @@ private val kTag = "StatusPageFragment" private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } private var isDeviceWorking = false + private val paramObject by lazy { org.json.JSONObject() }//数据Json对象 + private val dataTimer by lazy { Timer() }//数据上传Timer + private lateinit var deviceViewModel: DeviceViewModel override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status @@ -31,6 +39,7 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] } private val callback = Handler.Callback { message -> @@ -41,6 +50,13 @@ when (it) { "1" -> {//开关机 isDeviceWorking = parseObject[it] as Boolean + val switchStatus = if (isDeviceWorking) { + "1" + } else { + "0" + } + paramObject.put("workStatus", switchStatus) + paramObject.put("switchStatus", switchStatus) } "2" -> {//模式,[shushiyu, suiwengan, chufang] workModeView.text = when (parseObject[it] as String) { @@ -48,6 +64,7 @@ "suiwengan" -> "随温感" else -> "厨房" } + paramObject.put("workMode", workModeView.text) } "10" -> { currentTempView.text = String.format( @@ -55,6 +72,7 @@ requireContext().resources.getString(R.string.temperature_unit) }" ) + paramObject.put("currentTemperature", currentTempView.text) } } } @@ -63,6 +81,9 @@ val deviceBean = message.obj as DeviceBean deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") ipAddressView.text = deviceBean.ip + + paramObject.put("usageTime", deviceUsedTimeView.text) + paramObject.put("deviceId", deviceBean.devId) } } true @@ -74,8 +95,12 @@ if (wifiStatusSwitch.isChecked) { wifiLayout.visibility = View.VISIBLE wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + + paramObject.put("wifiStatus", "ON") + paramObject.put("wifiName", wifiNameView.text) } else { wifiLayout.visibility = View.GONE + paramObject.put("wifiStatus", "OFF") } deviceStatusSwitch.isChecked = isDeviceWorking } @@ -85,12 +110,63 @@ } override fun initEvent() { + //每隔5s传一次数据到服务器 + dataTimer.schedule(object : TimerTask() { + override fun run() { + CommandManager.getTuyaDp(deviceInstance, "105") + CommandManager.getTuyaDp(deviceInstance, "106") + CommandManager.getTuyaDp(deviceInstance, "103") + CommandManager.getTuyaDp(deviceInstance, "104") + deviceInstance.registerDevListener(object : TuyaDeviceListener() { + override fun onDpUpdate(devId: String?, dpStr: String?) { + val parseObject = JSONObject.parseObject(dpStr) + parseObject.keys.forEach { + when (it) { + "105" -> + paramObject.put( + "recentWaterConsumption", + String.format("${parseObject[it] as Int}L") + ) + "106" -> + paramObject.put( + "totalWaterConsumption", + String.format("${parseObject[it] as Int}t") + ) + "103" -> + paramObject.put( + "recentGasConsumption", + String.format( + "${parseObject[it] as Int}${ + resources.getString(R.string.volume_unit) + }" + ) + ) + "104" -> + paramObject.put( + "totalGasConsumption", + String.format( + "${parseObject[it] as Int}${ + resources.getString(R.string.volume_unit) + }" + ) + ) + } + } + } + }) + + val obj = org.json.JSONObject() + obj.put("heaterInfo", paramObject) + deviceViewModel.addDeviceData(obj) + } + }, 0, 5000) } override fun onDestroy() { super.onDestroy() deviceInstance.unRegisterDevListener() deviceInstance.onDestroy() + dataTimer.cancel() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt index 55600ee..1ec1301 100644 --- a/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt @@ -4,14 +4,17 @@ import android.net.wifi.WifiManager import android.os.Handler import android.view.View +import androidx.lifecycle.ViewModelProvider import com.alibaba.fastjson.JSONObject import com.casic.br.R import com.casic.br.extensions.diffDate +import com.casic.br.vm.DeviceViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.sdk.api.ITuyaDevice import com.tuya.smart.sdk.bean.DeviceBean import kotlinx.android.synthetic.main.fragment_device_cooker_status.* +import java.util.* class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -21,6 +24,9 @@ private val kTag = "StatusPageFragment" private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } + private val paramObject by lazy { org.json.JSONObject() }//数据Json对象 + private val dataTimer by lazy { Timer() }//数据上传Timer + private lateinit var deviceViewModel: DeviceViewModel override fun initLayoutView(): Int = R.layout.fragment_device_cooker_status @@ -34,6 +40,7 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] } private val callback = Handler.Callback { message -> @@ -50,6 +57,7 @@ "high" -> "猛火" else -> "已关火" } + paramObject.put("leftWorkStatus", leftCookerStateView.text) } "2" -> {//soft, low, medium, high rightCookerStateView.text = when (parseObject[it] as String) { @@ -59,12 +67,20 @@ "high" -> "猛火" else -> "已关火" } + paramObject.put("rightWorkStatus", rightCookerStateView.text) } "11" -> { workingTimeView.text = String.format("${parseObject[it] as Int}min") + paramObject.put("runTime", workingTimeView.text) } "101" -> { yzStatusSwitch.isChecked = parseObject[it] as Boolean + val smokeStove = if (yzStatusSwitch.isChecked) { + "1" + } else { + "0" + } + paramObject.put("smokeStove", smokeStove) } } } @@ -73,13 +89,23 @@ val deviceBean = message.obj as DeviceBean deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") ipAddressView.text = deviceBean.ip + + paramObject.put("usageTime", deviceUsedTimeView.text) + paramObject.put("deviceId", deviceBean.devId) } } true } override fun initEvent() { - + //每隔5s传一次数据到服务器 + dataTimer.schedule(object : TimerTask() { + override fun run() { + val obj = org.json.JSONObject() + obj.put("gasStoveInfo", paramObject) + deviceViewModel.addDeviceData(obj) + } + }, 0, 5000) } override fun onResume() { @@ -88,8 +114,12 @@ if (wifiStatusSwitch.isChecked) { wifiLayout.visibility = View.VISIBLE wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + + paramObject.put("wifiStatus", "ON") + paramObject.put("wifiName", wifiNameView.text) } else { wifiLayout.visibility = View.GONE + paramObject.put("wifiStatus", "OFF") } } @@ -97,5 +127,6 @@ super.onDestroy() deviceInstance.unRegisterDevListener() deviceInstance.onDestroy() + dataTimer.cancel() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt index 08e466b..4b983f3 100644 --- a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt @@ -4,14 +4,17 @@ import android.net.wifi.WifiManager import android.os.Handler import android.view.View +import androidx.lifecycle.ViewModelProvider import com.alibaba.fastjson.JSONObject import com.casic.br.R import com.casic.br.extensions.diffDate +import com.casic.br.vm.DeviceViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.sdk.api.ITuyaDevice import com.tuya.smart.sdk.bean.DeviceBean import kotlinx.android.synthetic.main.fragment_device_fireplace_status.* +import java.util.* class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -22,6 +25,9 @@ private val kTag = "StatusPageFragment" private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } private var isDeviceWorking = false + private val paramObject by lazy { org.json.JSONObject() }//数据Json对象 + private val dataTimer by lazy { Timer() }//数据上传Timer + private lateinit var deviceViewModel: DeviceViewModel override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_status @@ -35,6 +41,7 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] } private val callback = Handler.Callback { message -> @@ -45,6 +52,12 @@ when (it) { "1" -> {//开关机 isDeviceWorking = parseObject[it] as Boolean + val workStatus = if (isDeviceWorking) { + "1" + } else { + "0" + } + paramObject.put("workStatus", workStatus) } "4" -> { showerTempView.text = String.format( @@ -52,6 +65,7 @@ requireContext().resources.getString(R.string.temperature_unit) }" ) + paramObject.put("bathroomTemp", showerTempView.text) } "6" -> { heaterTempView.text = String.format( @@ -59,40 +73,51 @@ requireContext().resources.getString(R.string.temperature_unit) }" ) + paramObject.put("heatingTemp", heaterTempView.text) } "10" -> { - heaterStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + heaterStateView.text = "已开启" + paramObject.put("heatingStatus", "1") } else { - "已关闭" + heaterStateView.text = "已关闭" + paramObject.put("heatingStatus", "0") } } "11" -> { - showerStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + showerStateView.text = "已开启" + paramObject.put("bathroomStatus", "1") } else { - "已关闭" + showerStateView.text = "已关闭" + paramObject.put("bathroomStatus", "0") } } "103" -> { - antifreezeStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + antifreezeStateView.text = "已开启" + paramObject.put("antifreezeStatus", "1") } else { - "已关闭" + antifreezeStateView.text = "已关闭" + paramObject.put("antifreezeStatus", "0") } } "102" -> { - ventilatorStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + ventilatorStateView.text = "已开启" + paramObject.put("fanStatus", "1") } else { - "已关闭" + ventilatorStateView.text = "已关闭" + paramObject.put("fanStatus", "0") } } "101" -> { - pumpStateView.text = if (parseObject[it] as Boolean) { - "已开启" + if (parseObject[it] as Boolean) { + pumpStateView.text = "已开启" + paramObject.put("fanStatus", "1") } else { - "已关闭" + pumpStateView.text = "已关闭" + paramObject.put("fanStatus", "0") } } } @@ -102,13 +127,23 @@ val deviceBean = message.obj as DeviceBean deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") ipAddressView.text = deviceBean.ip + + paramObject.put("usageTime", deviceUsedTimeView.text) + paramObject.put("deviceId", deviceBean.devId) } } true } override fun initEvent() { - + //每隔5s传一次数据到服务器 + dataTimer.schedule(object : TimerTask() { + override fun run() { + val obj = org.json.JSONObject() + obj.put("hangingFurnaceInfo", paramObject) + deviceViewModel.addDeviceData(obj) + } + }, 0, 5000) } override fun onResume() { @@ -117,8 +152,12 @@ if (wifiStatusSwitch.isChecked) { wifiLayout.visibility = View.VISIBLE wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + + paramObject.put("wifiStatus", "ON") + paramObject.put("wifiName", wifiNameView.text) } else { wifiLayout.visibility = View.GONE + paramObject.put("wifiStatus", "OFF") } deviceStateView.text = if (!isDeviceWorking) { "已关机" @@ -131,5 +170,6 @@ super.onDestroy() deviceInstance.unRegisterDevListener() deviceInstance.onDestroy() + dataTimer.cancel() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/StatusPageFragment.kt index ed32f72..aa30006 100644 --- a/app/src/main/java/com/casic/br/fragment/rangehood/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/rangehood/StatusPageFragment.kt @@ -92,8 +92,7 @@ paramObject.put("switchStatus", switchStatus) } "11" -> {//设备状态,[off, low, high, strong, air, fangdaoguan, wash, delay, xunhang] - val status = parseObject[it] as String - deviceStateView.text = when (status) { + deviceStateView.text = when (parseObject[it] as String) { "low" -> "低档" "high" -> "高档" "strong" -> "爆炒" @@ -104,7 +103,7 @@ "xunhang" -> "巡航" else -> "OFF" } - paramObject.put("workStatus", status) + paramObject.put("workStatus", deviceStateView.text) } "12" -> {//累计工作时间 workingTimeView.text = if (isDeviceWorking) { @@ -115,32 +114,22 @@ paramObject.put("runTime", workingTimeView.text) } "106" -> {//烟灶联动 - val isLinkage = parseObject[it] as Boolean - linkageView.text = if (isLinkage) { - "开" + if (parseObject[it] as Boolean) { + linkageView.text = "开" + paramObject.put("smokeStove", "1") } else { - "关" + linkageView.text = "关" + paramObject.put("smokeStove", "0") } - val smokeStove = if (isLinkage) { - "1" - } else { - "0" - } - paramObject.put("smokeStove", smokeStove) } "107" -> {//倒油提醒 - val isPourOil = parseObject[it] as Boolean - pourOilView.text = if (isPourOil) { - "开" + if (parseObject[it] as Boolean) { + pourOilView.text = "开" + paramObject.put("oilPouringReminder", "1") } else { - "关" + pourOilView.text = "关" + paramObject.put("oilPouringReminder", "0") } - val oilPouringReminder = if (isPourOil) { - "1" - } else { - "0" - } - paramObject.put("oilPouringReminder", oilPouringReminder) } } } @@ -161,5 +150,6 @@ super.onDestroy() deviceInstance.unRegisterDevListener() deviceInstance.onDestroy() + dataTimer.cancel() } } \ No newline at end of file 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 2f76b75..62978dc 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 @@ -4,14 +4,19 @@ import android.net.wifi.WifiManager import android.os.Handler import android.view.View +import androidx.lifecycle.ViewModelProvider import com.alibaba.fastjson.JSONObject import com.casic.br.R import com.casic.br.extensions.diffDate +import com.casic.br.utils.CommandManager +import com.casic.br.utils.TuyaDeviceListener +import com.casic.br.vm.DeviceViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.sdk.api.ITuyaDevice import com.tuya.smart.sdk.bean.DeviceBean import kotlinx.android.synthetic.main.fragment_device_waterheater_status.* +import java.util.* class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -22,6 +27,9 @@ private val kTag = "StatusPageFragment" private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } private var isDeviceWorking = false + private val paramObject by lazy { org.json.JSONObject() }//数据Json对象 + private val dataTimer by lazy { Timer() }//数据上传Timer + private lateinit var deviceViewModel: DeviceViewModel override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status @@ -31,6 +39,7 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] } private val callback = Handler.Callback { message -> @@ -41,6 +50,13 @@ when (it) { "1" -> {//开关机 isDeviceWorking = parseObject[it] as Boolean + val switchStatus = if (isDeviceWorking) { + "1" + } else { + "0" + } + paramObject.put("workStatus", switchStatus) + paramObject.put("switchStatus", switchStatus) } "2" -> {//模式,[shushiyu, suiwengan, chufang] workModeView.text = when (parseObject[it] as String) { @@ -48,6 +64,7 @@ "suiwengan" -> "随温感" else -> "厨房" } + paramObject.put("workMode", workModeView.text) } "10" -> { currentTempView.text = String.format( @@ -55,6 +72,7 @@ requireContext().resources.getString(R.string.temperature_unit) }" ) + paramObject.put("currentTemperature", currentTempView.text) } } } @@ -63,6 +81,9 @@ val deviceBean = message.obj as DeviceBean deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") ipAddressView.text = deviceBean.ip + + paramObject.put("usageTime", deviceUsedTimeView.text) + paramObject.put("deviceId", deviceBean.devId) } } true @@ -74,8 +95,12 @@ if (wifiStatusSwitch.isChecked) { wifiLayout.visibility = View.VISIBLE wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + + paramObject.put("wifiStatus", "ON") + paramObject.put("wifiName", wifiNameView.text) } else { wifiLayout.visibility = View.GONE + paramObject.put("wifiStatus", "OFF") } deviceStatusSwitch.isChecked = isDeviceWorking } @@ -85,12 +110,63 @@ } override fun initEvent() { + //每隔5s传一次数据到服务器 + dataTimer.schedule(object : TimerTask() { + override fun run() { + CommandManager.getTuyaDp(deviceInstance, "105") + CommandManager.getTuyaDp(deviceInstance, "106") + CommandManager.getTuyaDp(deviceInstance, "103") + CommandManager.getTuyaDp(deviceInstance, "104") + deviceInstance.registerDevListener(object : TuyaDeviceListener() { + override fun onDpUpdate(devId: String?, dpStr: String?) { + val parseObject = JSONObject.parseObject(dpStr) + parseObject.keys.forEach { + when (it) { + "105" -> + paramObject.put( + "recentWaterConsumption", + String.format("${parseObject[it] as Int}L") + ) + "106" -> + paramObject.put( + "totalWaterConsumption", + String.format("${parseObject[it] as Int}t") + ) + "103" -> + paramObject.put( + "recentGasConsumption", + String.format( + "${parseObject[it] as Int}${ + resources.getString(R.string.volume_unit) + }" + ) + ) + "104" -> + paramObject.put( + "totalGasConsumption", + String.format( + "${parseObject[it] as Int}${ + resources.getString(R.string.volume_unit) + }" + ) + ) + } + } + } + }) + + val obj = org.json.JSONObject() + obj.put("heaterInfo", paramObject) + deviceViewModel.addDeviceData(obj) + } + }, 0, 5000) } override fun onDestroy() { super.onDestroy() deviceInstance.unRegisterDevListener() deviceInstance.onDestroy() + dataTimer.cancel() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/waterheater/GasConsumeActivity.kt b/app/src/main/java/com/casic/br/view/device/waterheater/GasConsumeActivity.kt index e3f99ac..4b66384 100644 --- a/app/src/main/java/com/casic/br/view/device/waterheater/GasConsumeActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/waterheater/GasConsumeActivity.kt @@ -17,6 +17,9 @@ import kotlinx.android.synthetic.main.include_base_title.* import java.util.* +/** + * TODO 后面需要改成从后台获取数据 + * */ class GasConsumeActivity : KotlinBaseActivity() { private val kTag = "GasConsumeActivity"