diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c380261..1a1b198 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -79,6 +79,7 @@ + + "智能网关" "wsdcg" -> "温湿度传感器" "ywbj" -> "火灾报警器" + "rqbj" -> "燃气报警器" + "cobj" -> "一氧化碳报警器" else -> "其他" } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c380261..1a1b198 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -79,6 +79,7 @@ + "智能网关" "wsdcg" -> "温湿度传感器" "ywbj" -> "火灾报警器" + "rqbj" -> "燃气报警器" + "cobj" -> "一氧化碳报警器" else -> "其他" } } diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index 79baca5..4c734b9 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -13,6 +13,7 @@ import com.casic.br.utils.DeserializeModel import com.casic.br.view.AddDeviceActivity import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.CoSensorActivity import com.casic.br.view.LoginActivity import com.casic.br.view.device.* import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -129,48 +130,57 @@ val selectedCategory = deviceModel.selectCategory() Log.d(kTag, "设备类型: $selectedCategory") when { - selectedCategory.contains("rs") -> { + selectedCategory == "rs" -> { //热水器 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("yyj") -> { + selectedCategory == "yyj" -> { //油烟机 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("bgl") -> { + selectedCategory == "bgl" -> { //壁挂炉 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("rq") -> { + selectedCategory == "rq" -> { //燃气灶 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("pc") -> { + selectedCategory == "pc" -> { //排插 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("cz") -> { + selectedCategory == "cz" -> { //插座 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("wg2") -> { + selectedCategory == "wg2" -> { //网关 requireContext().navigatePageTo( deviceModel.devId ) } - selectedCategory.contains("0204") -> { + //TODO 人体传感器设备类型待确认 + selectedCategory == "0204" -> { //人体传感器 requireContext().navigatePageTo() } - selectedCategory.contains("wsdcg") -> { + selectedCategory == "wsdcg" -> { //温湿度传感器 requireContext().navigatePageTo() } - selectedCategory.contains("ywbj") -> { + selectedCategory == "ywbj" -> { //火灾报警器 requireContext().navigatePageTo() } + selectedCategory == "rqbj" -> { + //燃气报警器 + requireContext().navigatePageTo() + } + selectedCategory == "cobj" -> { + //一氧化碳报警器 + requireContext().navigatePageTo() + } } } else { requireContext().navigatePageTo() diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c380261..1a1b198 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -79,6 +79,7 @@ + "智能网关" "wsdcg" -> "温湿度传感器" "ywbj" -> "火灾报警器" + "rqbj" -> "燃气报警器" + "cobj" -> "一氧化碳报警器" else -> "其他" } } diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index 79baca5..4c734b9 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -13,6 +13,7 @@ import com.casic.br.utils.DeserializeModel import com.casic.br.view.AddDeviceActivity import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.CoSensorActivity import com.casic.br.view.LoginActivity import com.casic.br.view.device.* import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -129,48 +130,57 @@ val selectedCategory = deviceModel.selectCategory() Log.d(kTag, "设备类型: $selectedCategory") when { - selectedCategory.contains("rs") -> { + selectedCategory == "rs" -> { //热水器 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("yyj") -> { + selectedCategory == "yyj" -> { //油烟机 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("bgl") -> { + selectedCategory == "bgl" -> { //壁挂炉 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("rq") -> { + selectedCategory == "rq" -> { //燃气灶 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("pc") -> { + selectedCategory == "pc" -> { //排插 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("cz") -> { + selectedCategory == "cz" -> { //插座 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("wg2") -> { + selectedCategory == "wg2" -> { //网关 requireContext().navigatePageTo( deviceModel.devId ) } - selectedCategory.contains("0204") -> { + //TODO 人体传感器设备类型待确认 + selectedCategory == "0204" -> { //人体传感器 requireContext().navigatePageTo() } - selectedCategory.contains("wsdcg") -> { + selectedCategory == "wsdcg" -> { //温湿度传感器 requireContext().navigatePageTo() } - selectedCategory.contains("ywbj") -> { + selectedCategory == "ywbj" -> { //火灾报警器 requireContext().navigatePageTo() } + selectedCategory == "rqbj" -> { + //燃气报警器 + requireContext().navigatePageTo() + } + selectedCategory == "cobj" -> { + //一氧化碳报警器 + requireContext().navigatePageTo() + } } } else { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/br/view/device/CoSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/CoSensorActivity.kt new file mode 100644 index 0000000..c6d7d77 --- /dev/null +++ b/app/src/main/java/com/casic/br/view/device/CoSensorActivity.kt @@ -0,0 +1,138 @@ +package com.casic.br.view.device + +import android.os.Handler +import android.util.Log +import android.view.View +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.extensions.selectCategory +import com.casic.br.extensions.toBatteryImage +import com.casic.br.utils.DeserializeModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.tuya.smart.home.sdk.TuyaHomeSdk +import com.tuya.smart.home.sdk.bean.HomeBean +import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback +import com.tuya.smart.sdk.bean.DeviceBean +import kotlinx.android.synthetic.main.activity_co_senser.* +import kotlinx.android.synthetic.main.include_device_title.* +import java.util.* + +class CoSensorActivity : KotlinBaseActivity() { + + private val context = this@CoSensorActivity + private val dataTimer by lazy { Timer() }//数据上传Timer + private val dataLinkedList = LinkedList>() + private lateinit var weakReference: WeakReferenceHandler + + override fun initLayoutView(): Int = R.layout.activity_co_senser + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + rightOperateView.visibility = View.GONE + } + + override fun initData() { + weakReference = WeakReferenceHandler(callback) + dataTimer.schedule(object : TimerTask() { + override fun run() { + TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId()) + .getHomeDetail(object : ITuyaHomeResultCallback { + override fun onSuccess(bean: HomeBean) { + bean.deviceList.forEach { + val selectedCategory = it.selectCategory() + if (selectedCategory == "cobj") { + //一氧化碳报警器 + val msg = weakReference.obtainMessage() + msg.what = 2022102003 + msg.obj = it + weakReference.sendMessage(msg) + } + } + } + + override fun onError(errorCode: String, errorMsg: String) { + Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg") + } + }) + } + }, 0, 5000) + } + + private val callback = Handler.Callback { message -> + if (message.what == 2022102003) { + val it = message.obj as DeviceBean + deviceStateView.text = if (it.isOnline) { + "设备在线" + } else { + "设备已离线" + } + titleView.text = it.name + Glide.with(context) + .load(it.iconUrl) + .apply(RequestOptions.circleCropTransform()) + .placeholder(R.mipmap.load_image_error) + .into(deviceLogoView) + + /** + * {"11":0,"1":"2","15":100} + * + * 11 - 故障告警 + * 1 - CO检测状态 + * 15 - 电池电量 + * */ + val dataMap = HashMap() + + val value = it.dps["15"].toString() + batteryView.setBackgroundResource(value.toBatteryImage()) + batteryValueView.text = "${value}%" + + val f = it.dps["11"] + faultAlarmView.text = if (f == 0) { + "正常" + } else { + "异常" + } + faultAlarmTimeView.text = if (faultAlarmView.text.toString() == "异常") { + System.currentTimeMillis().timestampToCompleteDate() + } else { + "--:--:--" + } + + val c = it.dps["1"] as String + coAlarmView.text = if (c == "2") { + "正常" + } else { + "异常" + } + coAlarmTimeView.text = if (coAlarmView.text.toString() == "异常") { + System.currentTimeMillis().timestampToCompleteDate() + } else { + "--:--:--" + } + + dataLinkedList.add(dataMap) + } + true + } + + override fun initEvent() { + + } + + override fun onDestroy() { + super.onDestroy() + dataTimer.cancel() + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c380261..1a1b198 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -79,6 +79,7 @@ + "智能网关" "wsdcg" -> "温湿度传感器" "ywbj" -> "火灾报警器" + "rqbj" -> "燃气报警器" + "cobj" -> "一氧化碳报警器" else -> "其他" } } diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index 79baca5..4c734b9 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -13,6 +13,7 @@ import com.casic.br.utils.DeserializeModel import com.casic.br.view.AddDeviceActivity import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.CoSensorActivity import com.casic.br.view.LoginActivity import com.casic.br.view.device.* import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -129,48 +130,57 @@ val selectedCategory = deviceModel.selectCategory() Log.d(kTag, "设备类型: $selectedCategory") when { - selectedCategory.contains("rs") -> { + selectedCategory == "rs" -> { //热水器 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("yyj") -> { + selectedCategory == "yyj" -> { //油烟机 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("bgl") -> { + selectedCategory == "bgl" -> { //壁挂炉 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("rq") -> { + selectedCategory == "rq" -> { //燃气灶 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("pc") -> { + selectedCategory == "pc" -> { //排插 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("cz") -> { + selectedCategory == "cz" -> { //插座 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("wg2") -> { + selectedCategory == "wg2" -> { //网关 requireContext().navigatePageTo( deviceModel.devId ) } - selectedCategory.contains("0204") -> { + //TODO 人体传感器设备类型待确认 + selectedCategory == "0204" -> { //人体传感器 requireContext().navigatePageTo() } - selectedCategory.contains("wsdcg") -> { + selectedCategory == "wsdcg" -> { //温湿度传感器 requireContext().navigatePageTo() } - selectedCategory.contains("ywbj") -> { + selectedCategory == "ywbj" -> { //火灾报警器 requireContext().navigatePageTo() } + selectedCategory == "rqbj" -> { + //燃气报警器 + requireContext().navigatePageTo() + } + selectedCategory == "cobj" -> { + //一氧化碳报警器 + requireContext().navigatePageTo() + } } } else { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/br/view/device/CoSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/CoSensorActivity.kt new file mode 100644 index 0000000..c6d7d77 --- /dev/null +++ b/app/src/main/java/com/casic/br/view/device/CoSensorActivity.kt @@ -0,0 +1,138 @@ +package com.casic.br.view.device + +import android.os.Handler +import android.util.Log +import android.view.View +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.extensions.selectCategory +import com.casic.br.extensions.toBatteryImage +import com.casic.br.utils.DeserializeModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.tuya.smart.home.sdk.TuyaHomeSdk +import com.tuya.smart.home.sdk.bean.HomeBean +import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback +import com.tuya.smart.sdk.bean.DeviceBean +import kotlinx.android.synthetic.main.activity_co_senser.* +import kotlinx.android.synthetic.main.include_device_title.* +import java.util.* + +class CoSensorActivity : KotlinBaseActivity() { + + private val context = this@CoSensorActivity + private val dataTimer by lazy { Timer() }//数据上传Timer + private val dataLinkedList = LinkedList>() + private lateinit var weakReference: WeakReferenceHandler + + override fun initLayoutView(): Int = R.layout.activity_co_senser + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + rightOperateView.visibility = View.GONE + } + + override fun initData() { + weakReference = WeakReferenceHandler(callback) + dataTimer.schedule(object : TimerTask() { + override fun run() { + TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId()) + .getHomeDetail(object : ITuyaHomeResultCallback { + override fun onSuccess(bean: HomeBean) { + bean.deviceList.forEach { + val selectedCategory = it.selectCategory() + if (selectedCategory == "cobj") { + //一氧化碳报警器 + val msg = weakReference.obtainMessage() + msg.what = 2022102003 + msg.obj = it + weakReference.sendMessage(msg) + } + } + } + + override fun onError(errorCode: String, errorMsg: String) { + Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg") + } + }) + } + }, 0, 5000) + } + + private val callback = Handler.Callback { message -> + if (message.what == 2022102003) { + val it = message.obj as DeviceBean + deviceStateView.text = if (it.isOnline) { + "设备在线" + } else { + "设备已离线" + } + titleView.text = it.name + Glide.with(context) + .load(it.iconUrl) + .apply(RequestOptions.circleCropTransform()) + .placeholder(R.mipmap.load_image_error) + .into(deviceLogoView) + + /** + * {"11":0,"1":"2","15":100} + * + * 11 - 故障告警 + * 1 - CO检测状态 + * 15 - 电池电量 + * */ + val dataMap = HashMap() + + val value = it.dps["15"].toString() + batteryView.setBackgroundResource(value.toBatteryImage()) + batteryValueView.text = "${value}%" + + val f = it.dps["11"] + faultAlarmView.text = if (f == 0) { + "正常" + } else { + "异常" + } + faultAlarmTimeView.text = if (faultAlarmView.text.toString() == "异常") { + System.currentTimeMillis().timestampToCompleteDate() + } else { + "--:--:--" + } + + val c = it.dps["1"] as String + coAlarmView.text = if (c == "2") { + "正常" + } else { + "异常" + } + coAlarmTimeView.text = if (coAlarmView.text.toString() == "异常") { + System.currentTimeMillis().timestampToCompleteDate() + } else { + "--:--:--" + } + + dataLinkedList.add(dataMap) + } + true + } + + override fun initEvent() { + + } + + override fun onDestroy() { + super.onDestroy() + dataTimer.cancel() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/FireSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/FireSensorActivity.kt index 15025f0..2b3c75b 100644 --- a/app/src/main/java/com/casic/br/view/device/FireSensorActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/FireSensorActivity.kt @@ -57,7 +57,7 @@ override fun onSuccess(bean: HomeBean) { bean.deviceList.forEach { val selectedCategory = it.selectCategory() - if (selectedCategory.contains("ywbj")) { + if (selectedCategory == "ywbj") { //火灾报警器 val msg = weakReference.obtainMessage() msg.what = 2022102002 @@ -78,7 +78,6 @@ private val callback = Handler.Callback { message -> if (message.what == 2022102002) { val it = message.obj as DeviceBean - it.toJson().writeToFile(this.createLogFile()) deviceStateView.text = if (it.isOnline) { "在线" } else { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c380261..1a1b198 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -79,6 +79,7 @@ + "智能网关" "wsdcg" -> "温湿度传感器" "ywbj" -> "火灾报警器" + "rqbj" -> "燃气报警器" + "cobj" -> "一氧化碳报警器" else -> "其他" } } diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index 79baca5..4c734b9 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -13,6 +13,7 @@ import com.casic.br.utils.DeserializeModel import com.casic.br.view.AddDeviceActivity import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.CoSensorActivity import com.casic.br.view.LoginActivity import com.casic.br.view.device.* import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -129,48 +130,57 @@ val selectedCategory = deviceModel.selectCategory() Log.d(kTag, "设备类型: $selectedCategory") when { - selectedCategory.contains("rs") -> { + selectedCategory == "rs" -> { //热水器 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("yyj") -> { + selectedCategory == "yyj" -> { //油烟机 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("bgl") -> { + selectedCategory == "bgl" -> { //壁挂炉 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("rq") -> { + selectedCategory == "rq" -> { //燃气灶 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("pc") -> { + selectedCategory == "pc" -> { //排插 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("cz") -> { + selectedCategory == "cz" -> { //插座 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("wg2") -> { + selectedCategory == "wg2" -> { //网关 requireContext().navigatePageTo( deviceModel.devId ) } - selectedCategory.contains("0204") -> { + //TODO 人体传感器设备类型待确认 + selectedCategory == "0204" -> { //人体传感器 requireContext().navigatePageTo() } - selectedCategory.contains("wsdcg") -> { + selectedCategory == "wsdcg" -> { //温湿度传感器 requireContext().navigatePageTo() } - selectedCategory.contains("ywbj") -> { + selectedCategory == "ywbj" -> { //火灾报警器 requireContext().navigatePageTo() } + selectedCategory == "rqbj" -> { + //燃气报警器 + requireContext().navigatePageTo() + } + selectedCategory == "cobj" -> { + //一氧化碳报警器 + requireContext().navigatePageTo() + } } } else { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/br/view/device/CoSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/CoSensorActivity.kt new file mode 100644 index 0000000..c6d7d77 --- /dev/null +++ b/app/src/main/java/com/casic/br/view/device/CoSensorActivity.kt @@ -0,0 +1,138 @@ +package com.casic.br.view.device + +import android.os.Handler +import android.util.Log +import android.view.View +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.extensions.selectCategory +import com.casic.br.extensions.toBatteryImage +import com.casic.br.utils.DeserializeModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.tuya.smart.home.sdk.TuyaHomeSdk +import com.tuya.smart.home.sdk.bean.HomeBean +import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback +import com.tuya.smart.sdk.bean.DeviceBean +import kotlinx.android.synthetic.main.activity_co_senser.* +import kotlinx.android.synthetic.main.include_device_title.* +import java.util.* + +class CoSensorActivity : KotlinBaseActivity() { + + private val context = this@CoSensorActivity + private val dataTimer by lazy { Timer() }//数据上传Timer + private val dataLinkedList = LinkedList>() + private lateinit var weakReference: WeakReferenceHandler + + override fun initLayoutView(): Int = R.layout.activity_co_senser + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + rightOperateView.visibility = View.GONE + } + + override fun initData() { + weakReference = WeakReferenceHandler(callback) + dataTimer.schedule(object : TimerTask() { + override fun run() { + TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId()) + .getHomeDetail(object : ITuyaHomeResultCallback { + override fun onSuccess(bean: HomeBean) { + bean.deviceList.forEach { + val selectedCategory = it.selectCategory() + if (selectedCategory == "cobj") { + //一氧化碳报警器 + val msg = weakReference.obtainMessage() + msg.what = 2022102003 + msg.obj = it + weakReference.sendMessage(msg) + } + } + } + + override fun onError(errorCode: String, errorMsg: String) { + Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg") + } + }) + } + }, 0, 5000) + } + + private val callback = Handler.Callback { message -> + if (message.what == 2022102003) { + val it = message.obj as DeviceBean + deviceStateView.text = if (it.isOnline) { + "设备在线" + } else { + "设备已离线" + } + titleView.text = it.name + Glide.with(context) + .load(it.iconUrl) + .apply(RequestOptions.circleCropTransform()) + .placeholder(R.mipmap.load_image_error) + .into(deviceLogoView) + + /** + * {"11":0,"1":"2","15":100} + * + * 11 - 故障告警 + * 1 - CO检测状态 + * 15 - 电池电量 + * */ + val dataMap = HashMap() + + val value = it.dps["15"].toString() + batteryView.setBackgroundResource(value.toBatteryImage()) + batteryValueView.text = "${value}%" + + val f = it.dps["11"] + faultAlarmView.text = if (f == 0) { + "正常" + } else { + "异常" + } + faultAlarmTimeView.text = if (faultAlarmView.text.toString() == "异常") { + System.currentTimeMillis().timestampToCompleteDate() + } else { + "--:--:--" + } + + val c = it.dps["1"] as String + coAlarmView.text = if (c == "2") { + "正常" + } else { + "异常" + } + coAlarmTimeView.text = if (coAlarmView.text.toString() == "异常") { + System.currentTimeMillis().timestampToCompleteDate() + } else { + "--:--:--" + } + + dataLinkedList.add(dataMap) + } + true + } + + override fun initEvent() { + + } + + override fun onDestroy() { + super.onDestroy() + dataTimer.cancel() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/FireSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/FireSensorActivity.kt index 15025f0..2b3c75b 100644 --- a/app/src/main/java/com/casic/br/view/device/FireSensorActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/FireSensorActivity.kt @@ -57,7 +57,7 @@ override fun onSuccess(bean: HomeBean) { bean.deviceList.forEach { val selectedCategory = it.selectCategory() - if (selectedCategory.contains("ywbj")) { + if (selectedCategory == "ywbj") { //火灾报警器 val msg = weakReference.obtainMessage() msg.what = 2022102002 @@ -78,7 +78,6 @@ private val callback = Handler.Callback { message -> if (message.what == 2022102002) { val it = message.obj as DeviceBean - it.toJson().writeToFile(this.createLogFile()) deviceStateView.text = if (it.isOnline) { "在线" } else { diff --git a/app/src/main/java/com/casic/br/view/device/MotionSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/MotionSensorActivity.kt index 5ecd0c8..944304f 100644 --- a/app/src/main/java/com/casic/br/view/device/MotionSensorActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/MotionSensorActivity.kt @@ -63,7 +63,7 @@ override fun onSuccess(bean: HomeBean) { bean.deviceList.forEach { val selectedCategory = it.selectCategory() - if (selectedCategory.contains("0204")) { + if (selectedCategory == "0204") { //人体传感器 val msg = weakReference.obtainMessage() msg.what = 2022102001 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c380261..1a1b198 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -79,6 +79,7 @@ + "智能网关" "wsdcg" -> "温湿度传感器" "ywbj" -> "火灾报警器" + "rqbj" -> "燃气报警器" + "cobj" -> "一氧化碳报警器" else -> "其他" } } diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index 79baca5..4c734b9 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -13,6 +13,7 @@ import com.casic.br.utils.DeserializeModel import com.casic.br.view.AddDeviceActivity import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.CoSensorActivity import com.casic.br.view.LoginActivity import com.casic.br.view.device.* import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -129,48 +130,57 @@ val selectedCategory = deviceModel.selectCategory() Log.d(kTag, "设备类型: $selectedCategory") when { - selectedCategory.contains("rs") -> { + selectedCategory == "rs" -> { //热水器 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("yyj") -> { + selectedCategory == "yyj" -> { //油烟机 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("bgl") -> { + selectedCategory == "bgl" -> { //壁挂炉 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("rq") -> { + selectedCategory == "rq" -> { //燃气灶 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("pc") -> { + selectedCategory == "pc" -> { //排插 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("cz") -> { + selectedCategory == "cz" -> { //插座 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("wg2") -> { + selectedCategory == "wg2" -> { //网关 requireContext().navigatePageTo( deviceModel.devId ) } - selectedCategory.contains("0204") -> { + //TODO 人体传感器设备类型待确认 + selectedCategory == "0204" -> { //人体传感器 requireContext().navigatePageTo() } - selectedCategory.contains("wsdcg") -> { + selectedCategory == "wsdcg" -> { //温湿度传感器 requireContext().navigatePageTo() } - selectedCategory.contains("ywbj") -> { + selectedCategory == "ywbj" -> { //火灾报警器 requireContext().navigatePageTo() } + selectedCategory == "rqbj" -> { + //燃气报警器 + requireContext().navigatePageTo() + } + selectedCategory == "cobj" -> { + //一氧化碳报警器 + requireContext().navigatePageTo() + } } } else { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/br/view/device/CoSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/CoSensorActivity.kt new file mode 100644 index 0000000..c6d7d77 --- /dev/null +++ b/app/src/main/java/com/casic/br/view/device/CoSensorActivity.kt @@ -0,0 +1,138 @@ +package com.casic.br.view.device + +import android.os.Handler +import android.util.Log +import android.view.View +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.extensions.selectCategory +import com.casic.br.extensions.toBatteryImage +import com.casic.br.utils.DeserializeModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.tuya.smart.home.sdk.TuyaHomeSdk +import com.tuya.smart.home.sdk.bean.HomeBean +import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback +import com.tuya.smart.sdk.bean.DeviceBean +import kotlinx.android.synthetic.main.activity_co_senser.* +import kotlinx.android.synthetic.main.include_device_title.* +import java.util.* + +class CoSensorActivity : KotlinBaseActivity() { + + private val context = this@CoSensorActivity + private val dataTimer by lazy { Timer() }//数据上传Timer + private val dataLinkedList = LinkedList>() + private lateinit var weakReference: WeakReferenceHandler + + override fun initLayoutView(): Int = R.layout.activity_co_senser + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + rightOperateView.visibility = View.GONE + } + + override fun initData() { + weakReference = WeakReferenceHandler(callback) + dataTimer.schedule(object : TimerTask() { + override fun run() { + TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId()) + .getHomeDetail(object : ITuyaHomeResultCallback { + override fun onSuccess(bean: HomeBean) { + bean.deviceList.forEach { + val selectedCategory = it.selectCategory() + if (selectedCategory == "cobj") { + //一氧化碳报警器 + val msg = weakReference.obtainMessage() + msg.what = 2022102003 + msg.obj = it + weakReference.sendMessage(msg) + } + } + } + + override fun onError(errorCode: String, errorMsg: String) { + Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg") + } + }) + } + }, 0, 5000) + } + + private val callback = Handler.Callback { message -> + if (message.what == 2022102003) { + val it = message.obj as DeviceBean + deviceStateView.text = if (it.isOnline) { + "设备在线" + } else { + "设备已离线" + } + titleView.text = it.name + Glide.with(context) + .load(it.iconUrl) + .apply(RequestOptions.circleCropTransform()) + .placeholder(R.mipmap.load_image_error) + .into(deviceLogoView) + + /** + * {"11":0,"1":"2","15":100} + * + * 11 - 故障告警 + * 1 - CO检测状态 + * 15 - 电池电量 + * */ + val dataMap = HashMap() + + val value = it.dps["15"].toString() + batteryView.setBackgroundResource(value.toBatteryImage()) + batteryValueView.text = "${value}%" + + val f = it.dps["11"] + faultAlarmView.text = if (f == 0) { + "正常" + } else { + "异常" + } + faultAlarmTimeView.text = if (faultAlarmView.text.toString() == "异常") { + System.currentTimeMillis().timestampToCompleteDate() + } else { + "--:--:--" + } + + val c = it.dps["1"] as String + coAlarmView.text = if (c == "2") { + "正常" + } else { + "异常" + } + coAlarmTimeView.text = if (coAlarmView.text.toString() == "异常") { + System.currentTimeMillis().timestampToCompleteDate() + } else { + "--:--:--" + } + + dataLinkedList.add(dataMap) + } + true + } + + override fun initEvent() { + + } + + override fun onDestroy() { + super.onDestroy() + dataTimer.cancel() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/FireSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/FireSensorActivity.kt index 15025f0..2b3c75b 100644 --- a/app/src/main/java/com/casic/br/view/device/FireSensorActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/FireSensorActivity.kt @@ -57,7 +57,7 @@ override fun onSuccess(bean: HomeBean) { bean.deviceList.forEach { val selectedCategory = it.selectCategory() - if (selectedCategory.contains("ywbj")) { + if (selectedCategory == "ywbj") { //火灾报警器 val msg = weakReference.obtainMessage() msg.what = 2022102002 @@ -78,7 +78,6 @@ private val callback = Handler.Callback { message -> if (message.what == 2022102002) { val it = message.obj as DeviceBean - it.toJson().writeToFile(this.createLogFile()) deviceStateView.text = if (it.isOnline) { "在线" } else { diff --git a/app/src/main/java/com/casic/br/view/device/MotionSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/MotionSensorActivity.kt index 5ecd0c8..944304f 100644 --- a/app/src/main/java/com/casic/br/view/device/MotionSensorActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/MotionSensorActivity.kt @@ -63,7 +63,7 @@ override fun onSuccess(bean: HomeBean) { bean.deviceList.forEach { val selectedCategory = it.selectCategory() - if (selectedCategory.contains("0204")) { + if (selectedCategory == "0204") { //人体传感器 val msg = weakReference.obtainMessage() msg.what = 2022102001 diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt index 7c8dfe7..448861e 100644 --- a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt @@ -61,7 +61,7 @@ override fun onSuccess(bean: HomeBean) { bean.deviceList.forEach { val selectedCategory = it.selectCategory() - if (selectedCategory.contains("wsdcg")) { + if (selectedCategory == "wsdcg") { //温湿度传感器 val msg = weakReference.obtainMessage() msg.what = 2022112001 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c380261..1a1b198 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -79,6 +79,7 @@ + "智能网关" "wsdcg" -> "温湿度传感器" "ywbj" -> "火灾报警器" + "rqbj" -> "燃气报警器" + "cobj" -> "一氧化碳报警器" else -> "其他" } } diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index 79baca5..4c734b9 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -13,6 +13,7 @@ import com.casic.br.utils.DeserializeModel import com.casic.br.view.AddDeviceActivity import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.CoSensorActivity import com.casic.br.view.LoginActivity import com.casic.br.view.device.* import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -129,48 +130,57 @@ val selectedCategory = deviceModel.selectCategory() Log.d(kTag, "设备类型: $selectedCategory") when { - selectedCategory.contains("rs") -> { + selectedCategory == "rs" -> { //热水器 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("yyj") -> { + selectedCategory == "yyj" -> { //油烟机 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("bgl") -> { + selectedCategory == "bgl" -> { //壁挂炉 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("rq") -> { + selectedCategory == "rq" -> { //燃气灶 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("pc") -> { + selectedCategory == "pc" -> { //排插 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("cz") -> { + selectedCategory == "cz" -> { //插座 requireContext().navigatePageTo(deviceModel.devId) } - selectedCategory.contains("wg2") -> { + selectedCategory == "wg2" -> { //网关 requireContext().navigatePageTo( deviceModel.devId ) } - selectedCategory.contains("0204") -> { + //TODO 人体传感器设备类型待确认 + selectedCategory == "0204" -> { //人体传感器 requireContext().navigatePageTo() } - selectedCategory.contains("wsdcg") -> { + selectedCategory == "wsdcg" -> { //温湿度传感器 requireContext().navigatePageTo() } - selectedCategory.contains("ywbj") -> { + selectedCategory == "ywbj" -> { //火灾报警器 requireContext().navigatePageTo() } + selectedCategory == "rqbj" -> { + //燃气报警器 + requireContext().navigatePageTo() + } + selectedCategory == "cobj" -> { + //一氧化碳报警器 + requireContext().navigatePageTo() + } } } else { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/br/view/device/CoSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/CoSensorActivity.kt new file mode 100644 index 0000000..c6d7d77 --- /dev/null +++ b/app/src/main/java/com/casic/br/view/device/CoSensorActivity.kt @@ -0,0 +1,138 @@ +package com.casic.br.view.device + +import android.os.Handler +import android.util.Log +import android.view.View +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.extensions.selectCategory +import com.casic.br.extensions.toBatteryImage +import com.casic.br.utils.DeserializeModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.tuya.smart.home.sdk.TuyaHomeSdk +import com.tuya.smart.home.sdk.bean.HomeBean +import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback +import com.tuya.smart.sdk.bean.DeviceBean +import kotlinx.android.synthetic.main.activity_co_senser.* +import kotlinx.android.synthetic.main.include_device_title.* +import java.util.* + +class CoSensorActivity : KotlinBaseActivity() { + + private val context = this@CoSensorActivity + private val dataTimer by lazy { Timer() }//数据上传Timer + private val dataLinkedList = LinkedList>() + private lateinit var weakReference: WeakReferenceHandler + + override fun initLayoutView(): Int = R.layout.activity_co_senser + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + rightOperateView.visibility = View.GONE + } + + override fun initData() { + weakReference = WeakReferenceHandler(callback) + dataTimer.schedule(object : TimerTask() { + override fun run() { + TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId()) + .getHomeDetail(object : ITuyaHomeResultCallback { + override fun onSuccess(bean: HomeBean) { + bean.deviceList.forEach { + val selectedCategory = it.selectCategory() + if (selectedCategory == "cobj") { + //一氧化碳报警器 + val msg = weakReference.obtainMessage() + msg.what = 2022102003 + msg.obj = it + weakReference.sendMessage(msg) + } + } + } + + override fun onError(errorCode: String, errorMsg: String) { + Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg") + } + }) + } + }, 0, 5000) + } + + private val callback = Handler.Callback { message -> + if (message.what == 2022102003) { + val it = message.obj as DeviceBean + deviceStateView.text = if (it.isOnline) { + "设备在线" + } else { + "设备已离线" + } + titleView.text = it.name + Glide.with(context) + .load(it.iconUrl) + .apply(RequestOptions.circleCropTransform()) + .placeholder(R.mipmap.load_image_error) + .into(deviceLogoView) + + /** + * {"11":0,"1":"2","15":100} + * + * 11 - 故障告警 + * 1 - CO检测状态 + * 15 - 电池电量 + * */ + val dataMap = HashMap() + + val value = it.dps["15"].toString() + batteryView.setBackgroundResource(value.toBatteryImage()) + batteryValueView.text = "${value}%" + + val f = it.dps["11"] + faultAlarmView.text = if (f == 0) { + "正常" + } else { + "异常" + } + faultAlarmTimeView.text = if (faultAlarmView.text.toString() == "异常") { + System.currentTimeMillis().timestampToCompleteDate() + } else { + "--:--:--" + } + + val c = it.dps["1"] as String + coAlarmView.text = if (c == "2") { + "正常" + } else { + "异常" + } + coAlarmTimeView.text = if (coAlarmView.text.toString() == "异常") { + System.currentTimeMillis().timestampToCompleteDate() + } else { + "--:--:--" + } + + dataLinkedList.add(dataMap) + } + true + } + + override fun initEvent() { + + } + + override fun onDestroy() { + super.onDestroy() + dataTimer.cancel() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/FireSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/FireSensorActivity.kt index 15025f0..2b3c75b 100644 --- a/app/src/main/java/com/casic/br/view/device/FireSensorActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/FireSensorActivity.kt @@ -57,7 +57,7 @@ override fun onSuccess(bean: HomeBean) { bean.deviceList.forEach { val selectedCategory = it.selectCategory() - if (selectedCategory.contains("ywbj")) { + if (selectedCategory == "ywbj") { //火灾报警器 val msg = weakReference.obtainMessage() msg.what = 2022102002 @@ -78,7 +78,6 @@ private val callback = Handler.Callback { message -> if (message.what == 2022102002) { val it = message.obj as DeviceBean - it.toJson().writeToFile(this.createLogFile()) deviceStateView.text = if (it.isOnline) { "在线" } else { diff --git a/app/src/main/java/com/casic/br/view/device/MotionSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/MotionSensorActivity.kt index 5ecd0c8..944304f 100644 --- a/app/src/main/java/com/casic/br/view/device/MotionSensorActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/MotionSensorActivity.kt @@ -63,7 +63,7 @@ override fun onSuccess(bean: HomeBean) { bean.deviceList.forEach { val selectedCategory = it.selectCategory() - if (selectedCategory.contains("0204")) { + if (selectedCategory == "0204") { //人体传感器 val msg = weakReference.obtainMessage() msg.what = 2022102001 diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt index 7c8dfe7..448861e 100644 --- a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt @@ -61,7 +61,7 @@ override fun onSuccess(bean: HomeBean) { bean.deviceList.forEach { val selectedCategory = it.selectCategory() - if (selectedCategory.contains("wsdcg")) { + if (selectedCategory == "wsdcg") { //温湿度传感器 val msg = weakReference.obtainMessage() msg.what = 2022112001 diff --git a/app/src/main/res/layout/activity_co_senser.xml b/app/src/main/res/layout/activity_co_senser.xml new file mode 100644 index 0000000..393d18c --- /dev/null +++ b/app/src/main/res/layout/activity_co_senser.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file