diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26fd5a9..c742743 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,6 +89,7 @@
+
+
+
1°C时,水泵开始运行,屏幕显示E0故障代码,轻触开关键方可解除故障。"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点火故障,点火失败或中途意外熄火",
+ "solution": [
+ "先检查所有的燃气阀门是否打开,并确保此时有燃气供应,然后再按开关键,使壁挂炉重新启动,如果仍不能启动燃烧,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "风机或风压故障",
+ "solution": [
+ "关闭壁挂炉,检查排烟管是否堵塞,如果有堵塞物,将其清除即可重新启动运行,如果仍不能启动或多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "机械温控器故障",
+ "solution": [
+ "当壁挂炉内部水温降至60℃以下时,按动开关键,即可解除故障锁定状态。如果多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "洗浴温度传感器故障",
+ "solution": [
+ "壁挂炉洗浴温度传感器断线或不正常,此故障需与专业人员联系解决。"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "温度探头超温保护",
+ "solution": [
+ "当温度探头检测到水温或烟温,达到或超过最高温度时,报E5故障并进入故障锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "火焰检测故障",
+ "solution": [
+ "系统开始点火燃烧前,检测到有火焰信号,或关闭截止阀后,检测到有火焰信号,诊断为伪火或残火故障,进入锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "水压故障",
+ "solution": [
+ "关闭壁挂炉并关闭壁挂炉电源,逆时针旋转补水阀旋钮补水,观察显示屏上的压力显示值,当水压显示值在0.1~0.15MPa之间时,顺时针旋紧补水阀,然后接通电源,启动壁挂炉。"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "供暖温度传感器故障",
+ "solution": [
+ "壁挂炉供暧温度传感器断线或不正常,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "EEPROM故障",
+ "solution": [
+ "在系统数据改变或存储的数据发生错误时,显示此故障,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "EF",
+ "phenomenon": "冷凝水堵塞故障",
+ "solution": [
+ "关闭壁挂炉电源,检査冷凝水排水管是否堵塞,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "",
+ "phenomenon": "显示屏没有接收到主电路板的信号",
+ "solution": [
+ "按动开关键,若不能解除,切断壁挂炉电源后,再重新接通电源,若尝试几次均无效时,请与专业人员联系。"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26fd5a9..c742743 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,6 +89,7 @@
+
1°C时,水泵开始运行,屏幕显示E0故障代码,轻触开关键方可解除故障。"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点火故障,点火失败或中途意外熄火",
+ "solution": [
+ "先检查所有的燃气阀门是否打开,并确保此时有燃气供应,然后再按开关键,使壁挂炉重新启动,如果仍不能启动燃烧,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "风机或风压故障",
+ "solution": [
+ "关闭壁挂炉,检查排烟管是否堵塞,如果有堵塞物,将其清除即可重新启动运行,如果仍不能启动或多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "机械温控器故障",
+ "solution": [
+ "当壁挂炉内部水温降至60℃以下时,按动开关键,即可解除故障锁定状态。如果多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "洗浴温度传感器故障",
+ "solution": [
+ "壁挂炉洗浴温度传感器断线或不正常,此故障需与专业人员联系解决。"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "温度探头超温保护",
+ "solution": [
+ "当温度探头检测到水温或烟温,达到或超过最高温度时,报E5故障并进入故障锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "火焰检测故障",
+ "solution": [
+ "系统开始点火燃烧前,检测到有火焰信号,或关闭截止阀后,检测到有火焰信号,诊断为伪火或残火故障,进入锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "水压故障",
+ "solution": [
+ "关闭壁挂炉并关闭壁挂炉电源,逆时针旋转补水阀旋钮补水,观察显示屏上的压力显示值,当水压显示值在0.1~0.15MPa之间时,顺时针旋紧补水阀,然后接通电源,启动壁挂炉。"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "供暖温度传感器故障",
+ "solution": [
+ "壁挂炉供暧温度传感器断线或不正常,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "EEPROM故障",
+ "solution": [
+ "在系统数据改变或存储的数据发生错误时,显示此故障,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "EF",
+ "phenomenon": "冷凝水堵塞故障",
+ "solution": [
+ "关闭壁挂炉电源,检査冷凝水排水管是否堵塞,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "",
+ "phenomenon": "显示屏没有接收到主电路板的信号",
+ "solution": [
+ "按动开关键,若不能解除,切断壁挂炉电源后,再重新接通电源,若尝试几次均无效时,请与专业人员联系。"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/assets/waterheater_fault_desc.json b/app/src/main/assets/waterheater_fault_desc.json
new file mode 100644
index 0000000..f476052
--- /dev/null
+++ b/app/src/main/assets/waterheater_fault_desc.json
@@ -0,0 +1,108 @@
+[
+ {
+ "errorCode": "E0",
+ "phenomenon": "残⽕",
+ "solution": [
+ "1、请关闭燃⽓阀⻔并切断热⽔器电源",
+ "2、请联系本公司售后,待售后⼈员排除热⽔器故障后⽅可恢复使⽤"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点⽕失败意外熄⽕",
+ "solution": [
+ "1、检查燃⽓开关是否打开,燃⽓管道或燃⽓罐是否有⽓",
+ "2、关⽔,重新启动",
+ "3、液化⽯油⽓⽓压⾼(减压阀坏)"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "电机故障或者烟道堵塞",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "过热保护或者温控器或电磁阀开路",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "感温器短路或开路",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "⽔温超过85℃",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "伪⽕",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "⽔泵堵转",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "风压异常",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "冷凝⽔排放通道堵塞",
+ "solution": [
+ "1、检查冷凝⽔排⽔管是否堵塞",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "En",
+ "phenomenon": "定时时间到",
+ "solution": [
+ "1、关⽔,关机,重新启动热⽔器"
+ ]
+ },
+ {
+ "errorCode": "F3",
+ "phenomenon": "进⽔温度传感器故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F5",
+ "phenomenon": "防冻探头故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F6",
+ "phenomenon": "CO或者CH4报警",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26fd5a9..c742743 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,6 +89,7 @@
+
1°C时,水泵开始运行,屏幕显示E0故障代码,轻触开关键方可解除故障。"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点火故障,点火失败或中途意外熄火",
+ "solution": [
+ "先检查所有的燃气阀门是否打开,并确保此时有燃气供应,然后再按开关键,使壁挂炉重新启动,如果仍不能启动燃烧,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "风机或风压故障",
+ "solution": [
+ "关闭壁挂炉,检查排烟管是否堵塞,如果有堵塞物,将其清除即可重新启动运行,如果仍不能启动或多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "机械温控器故障",
+ "solution": [
+ "当壁挂炉内部水温降至60℃以下时,按动开关键,即可解除故障锁定状态。如果多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "洗浴温度传感器故障",
+ "solution": [
+ "壁挂炉洗浴温度传感器断线或不正常,此故障需与专业人员联系解决。"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "温度探头超温保护",
+ "solution": [
+ "当温度探头检测到水温或烟温,达到或超过最高温度时,报E5故障并进入故障锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "火焰检测故障",
+ "solution": [
+ "系统开始点火燃烧前,检测到有火焰信号,或关闭截止阀后,检测到有火焰信号,诊断为伪火或残火故障,进入锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "水压故障",
+ "solution": [
+ "关闭壁挂炉并关闭壁挂炉电源,逆时针旋转补水阀旋钮补水,观察显示屏上的压力显示值,当水压显示值在0.1~0.15MPa之间时,顺时针旋紧补水阀,然后接通电源,启动壁挂炉。"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "供暖温度传感器故障",
+ "solution": [
+ "壁挂炉供暧温度传感器断线或不正常,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "EEPROM故障",
+ "solution": [
+ "在系统数据改变或存储的数据发生错误时,显示此故障,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "EF",
+ "phenomenon": "冷凝水堵塞故障",
+ "solution": [
+ "关闭壁挂炉电源,检査冷凝水排水管是否堵塞,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "",
+ "phenomenon": "显示屏没有接收到主电路板的信号",
+ "solution": [
+ "按动开关键,若不能解除,切断壁挂炉电源后,再重新接通电源,若尝试几次均无效时,请与专业人员联系。"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/assets/waterheater_fault_desc.json b/app/src/main/assets/waterheater_fault_desc.json
new file mode 100644
index 0000000..f476052
--- /dev/null
+++ b/app/src/main/assets/waterheater_fault_desc.json
@@ -0,0 +1,108 @@
+[
+ {
+ "errorCode": "E0",
+ "phenomenon": "残⽕",
+ "solution": [
+ "1、请关闭燃⽓阀⻔并切断热⽔器电源",
+ "2、请联系本公司售后,待售后⼈员排除热⽔器故障后⽅可恢复使⽤"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点⽕失败意外熄⽕",
+ "solution": [
+ "1、检查燃⽓开关是否打开,燃⽓管道或燃⽓罐是否有⽓",
+ "2、关⽔,重新启动",
+ "3、液化⽯油⽓⽓压⾼(减压阀坏)"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "电机故障或者烟道堵塞",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "过热保护或者温控器或电磁阀开路",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "感温器短路或开路",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "⽔温超过85℃",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "伪⽕",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "⽔泵堵转",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "风压异常",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "冷凝⽔排放通道堵塞",
+ "solution": [
+ "1、检查冷凝⽔排⽔管是否堵塞",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "En",
+ "phenomenon": "定时时间到",
+ "solution": [
+ "1、关⽔,关机,重新启动热⽔器"
+ ]
+ },
+ {
+ "errorCode": "F3",
+ "phenomenon": "进⽔温度传感器故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F5",
+ "phenomenon": "防冻探头故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F6",
+ "phenomenon": "CO或者CH4报警",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
new file mode 100644
index 0000000..c87706a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel
+
+class FaultDescAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.errorCodeView.text = rowsModel.errorCode
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val errorCodeView: TextView = itemView.findViewById(R.id.errorCodeView)
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26fd5a9..c742743 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,6 +89,7 @@
+
1°C时,水泵开始运行,屏幕显示E0故障代码,轻触开关键方可解除故障。"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点火故障,点火失败或中途意外熄火",
+ "solution": [
+ "先检查所有的燃气阀门是否打开,并确保此时有燃气供应,然后再按开关键,使壁挂炉重新启动,如果仍不能启动燃烧,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "风机或风压故障",
+ "solution": [
+ "关闭壁挂炉,检查排烟管是否堵塞,如果有堵塞物,将其清除即可重新启动运行,如果仍不能启动或多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "机械温控器故障",
+ "solution": [
+ "当壁挂炉内部水温降至60℃以下时,按动开关键,即可解除故障锁定状态。如果多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "洗浴温度传感器故障",
+ "solution": [
+ "壁挂炉洗浴温度传感器断线或不正常,此故障需与专业人员联系解决。"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "温度探头超温保护",
+ "solution": [
+ "当温度探头检测到水温或烟温,达到或超过最高温度时,报E5故障并进入故障锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "火焰检测故障",
+ "solution": [
+ "系统开始点火燃烧前,检测到有火焰信号,或关闭截止阀后,检测到有火焰信号,诊断为伪火或残火故障,进入锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "水压故障",
+ "solution": [
+ "关闭壁挂炉并关闭壁挂炉电源,逆时针旋转补水阀旋钮补水,观察显示屏上的压力显示值,当水压显示值在0.1~0.15MPa之间时,顺时针旋紧补水阀,然后接通电源,启动壁挂炉。"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "供暖温度传感器故障",
+ "solution": [
+ "壁挂炉供暧温度传感器断线或不正常,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "EEPROM故障",
+ "solution": [
+ "在系统数据改变或存储的数据发生错误时,显示此故障,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "EF",
+ "phenomenon": "冷凝水堵塞故障",
+ "solution": [
+ "关闭壁挂炉电源,检査冷凝水排水管是否堵塞,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "",
+ "phenomenon": "显示屏没有接收到主电路板的信号",
+ "solution": [
+ "按动开关键,若不能解除,切断壁挂炉电源后,再重新接通电源,若尝试几次均无效时,请与专业人员联系。"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/assets/waterheater_fault_desc.json b/app/src/main/assets/waterheater_fault_desc.json
new file mode 100644
index 0000000..f476052
--- /dev/null
+++ b/app/src/main/assets/waterheater_fault_desc.json
@@ -0,0 +1,108 @@
+[
+ {
+ "errorCode": "E0",
+ "phenomenon": "残⽕",
+ "solution": [
+ "1、请关闭燃⽓阀⻔并切断热⽔器电源",
+ "2、请联系本公司售后,待售后⼈员排除热⽔器故障后⽅可恢复使⽤"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点⽕失败意外熄⽕",
+ "solution": [
+ "1、检查燃⽓开关是否打开,燃⽓管道或燃⽓罐是否有⽓",
+ "2、关⽔,重新启动",
+ "3、液化⽯油⽓⽓压⾼(减压阀坏)"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "电机故障或者烟道堵塞",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "过热保护或者温控器或电磁阀开路",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "感温器短路或开路",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "⽔温超过85℃",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "伪⽕",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "⽔泵堵转",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "风压异常",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "冷凝⽔排放通道堵塞",
+ "solution": [
+ "1、检查冷凝⽔排⽔管是否堵塞",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "En",
+ "phenomenon": "定时时间到",
+ "solution": [
+ "1、关⽔,关机,重新启动热⽔器"
+ ]
+ },
+ {
+ "errorCode": "F3",
+ "phenomenon": "进⽔温度传感器故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F5",
+ "phenomenon": "防冻探头故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F6",
+ "phenomenon": "CO或者CH4报警",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
new file mode 100644
index 0000000..c87706a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel
+
+class FaultDescAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.errorCodeView.text = rowsModel.errorCode
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val errorCodeView: TextView = itemView.findViewById(R.id.errorCodeView)
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
new file mode 100644
index 0000000..2da7ff4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel2
+
+class FaultDescAdapter2(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l_2, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.reasonRecyclerView.adapter = SolutionAdapter(context, rowsModel.reason)
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val reasonRecyclerView: RecyclerView = itemView.findViewById(R.id.reasonRecyclerView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26fd5a9..c742743 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,6 +89,7 @@
+
1°C时,水泵开始运行,屏幕显示E0故障代码,轻触开关键方可解除故障。"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点火故障,点火失败或中途意外熄火",
+ "solution": [
+ "先检查所有的燃气阀门是否打开,并确保此时有燃气供应,然后再按开关键,使壁挂炉重新启动,如果仍不能启动燃烧,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "风机或风压故障",
+ "solution": [
+ "关闭壁挂炉,检查排烟管是否堵塞,如果有堵塞物,将其清除即可重新启动运行,如果仍不能启动或多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "机械温控器故障",
+ "solution": [
+ "当壁挂炉内部水温降至60℃以下时,按动开关键,即可解除故障锁定状态。如果多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "洗浴温度传感器故障",
+ "solution": [
+ "壁挂炉洗浴温度传感器断线或不正常,此故障需与专业人员联系解决。"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "温度探头超温保护",
+ "solution": [
+ "当温度探头检测到水温或烟温,达到或超过最高温度时,报E5故障并进入故障锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "火焰检测故障",
+ "solution": [
+ "系统开始点火燃烧前,检测到有火焰信号,或关闭截止阀后,检测到有火焰信号,诊断为伪火或残火故障,进入锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "水压故障",
+ "solution": [
+ "关闭壁挂炉并关闭壁挂炉电源,逆时针旋转补水阀旋钮补水,观察显示屏上的压力显示值,当水压显示值在0.1~0.15MPa之间时,顺时针旋紧补水阀,然后接通电源,启动壁挂炉。"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "供暖温度传感器故障",
+ "solution": [
+ "壁挂炉供暧温度传感器断线或不正常,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "EEPROM故障",
+ "solution": [
+ "在系统数据改变或存储的数据发生错误时,显示此故障,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "EF",
+ "phenomenon": "冷凝水堵塞故障",
+ "solution": [
+ "关闭壁挂炉电源,检査冷凝水排水管是否堵塞,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "",
+ "phenomenon": "显示屏没有接收到主电路板的信号",
+ "solution": [
+ "按动开关键,若不能解除,切断壁挂炉电源后,再重新接通电源,若尝试几次均无效时,请与专业人员联系。"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/assets/waterheater_fault_desc.json b/app/src/main/assets/waterheater_fault_desc.json
new file mode 100644
index 0000000..f476052
--- /dev/null
+++ b/app/src/main/assets/waterheater_fault_desc.json
@@ -0,0 +1,108 @@
+[
+ {
+ "errorCode": "E0",
+ "phenomenon": "残⽕",
+ "solution": [
+ "1、请关闭燃⽓阀⻔并切断热⽔器电源",
+ "2、请联系本公司售后,待售后⼈员排除热⽔器故障后⽅可恢复使⽤"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点⽕失败意外熄⽕",
+ "solution": [
+ "1、检查燃⽓开关是否打开,燃⽓管道或燃⽓罐是否有⽓",
+ "2、关⽔,重新启动",
+ "3、液化⽯油⽓⽓压⾼(减压阀坏)"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "电机故障或者烟道堵塞",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "过热保护或者温控器或电磁阀开路",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "感温器短路或开路",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "⽔温超过85℃",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "伪⽕",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "⽔泵堵转",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "风压异常",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "冷凝⽔排放通道堵塞",
+ "solution": [
+ "1、检查冷凝⽔排⽔管是否堵塞",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "En",
+ "phenomenon": "定时时间到",
+ "solution": [
+ "1、关⽔,关机,重新启动热⽔器"
+ ]
+ },
+ {
+ "errorCode": "F3",
+ "phenomenon": "进⽔温度传感器故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F5",
+ "phenomenon": "防冻探头故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F6",
+ "phenomenon": "CO或者CH4报警",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
new file mode 100644
index 0000000..c87706a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel
+
+class FaultDescAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.errorCodeView.text = rowsModel.errorCode
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val errorCodeView: TextView = itemView.findViewById(R.id.errorCodeView)
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
new file mode 100644
index 0000000..2da7ff4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel2
+
+class FaultDescAdapter2(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l_2, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.reasonRecyclerView.adapter = SolutionAdapter(context, rowsModel.reason)
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val reasonRecyclerView: RecyclerView = itemView.findViewById(R.id.reasonRecyclerView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
new file mode 100644
index 0000000..1a9453f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
@@ -0,0 +1,32 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+
+class SolutionAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_solution_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ holder.solutionView.text = dataRows[position]
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val solutionView: TextView = itemView.findViewById(R.id.solutionView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26fd5a9..c742743 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,6 +89,7 @@
+
1°C时,水泵开始运行,屏幕显示E0故障代码,轻触开关键方可解除故障。"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点火故障,点火失败或中途意外熄火",
+ "solution": [
+ "先检查所有的燃气阀门是否打开,并确保此时有燃气供应,然后再按开关键,使壁挂炉重新启动,如果仍不能启动燃烧,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "风机或风压故障",
+ "solution": [
+ "关闭壁挂炉,检查排烟管是否堵塞,如果有堵塞物,将其清除即可重新启动运行,如果仍不能启动或多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "机械温控器故障",
+ "solution": [
+ "当壁挂炉内部水温降至60℃以下时,按动开关键,即可解除故障锁定状态。如果多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "洗浴温度传感器故障",
+ "solution": [
+ "壁挂炉洗浴温度传感器断线或不正常,此故障需与专业人员联系解决。"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "温度探头超温保护",
+ "solution": [
+ "当温度探头检测到水温或烟温,达到或超过最高温度时,报E5故障并进入故障锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "火焰检测故障",
+ "solution": [
+ "系统开始点火燃烧前,检测到有火焰信号,或关闭截止阀后,检测到有火焰信号,诊断为伪火或残火故障,进入锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "水压故障",
+ "solution": [
+ "关闭壁挂炉并关闭壁挂炉电源,逆时针旋转补水阀旋钮补水,观察显示屏上的压力显示值,当水压显示值在0.1~0.15MPa之间时,顺时针旋紧补水阀,然后接通电源,启动壁挂炉。"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "供暖温度传感器故障",
+ "solution": [
+ "壁挂炉供暧温度传感器断线或不正常,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "EEPROM故障",
+ "solution": [
+ "在系统数据改变或存储的数据发生错误时,显示此故障,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "EF",
+ "phenomenon": "冷凝水堵塞故障",
+ "solution": [
+ "关闭壁挂炉电源,检査冷凝水排水管是否堵塞,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "",
+ "phenomenon": "显示屏没有接收到主电路板的信号",
+ "solution": [
+ "按动开关键,若不能解除,切断壁挂炉电源后,再重新接通电源,若尝试几次均无效时,请与专业人员联系。"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/assets/waterheater_fault_desc.json b/app/src/main/assets/waterheater_fault_desc.json
new file mode 100644
index 0000000..f476052
--- /dev/null
+++ b/app/src/main/assets/waterheater_fault_desc.json
@@ -0,0 +1,108 @@
+[
+ {
+ "errorCode": "E0",
+ "phenomenon": "残⽕",
+ "solution": [
+ "1、请关闭燃⽓阀⻔并切断热⽔器电源",
+ "2、请联系本公司售后,待售后⼈员排除热⽔器故障后⽅可恢复使⽤"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点⽕失败意外熄⽕",
+ "solution": [
+ "1、检查燃⽓开关是否打开,燃⽓管道或燃⽓罐是否有⽓",
+ "2、关⽔,重新启动",
+ "3、液化⽯油⽓⽓压⾼(减压阀坏)"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "电机故障或者烟道堵塞",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "过热保护或者温控器或电磁阀开路",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "感温器短路或开路",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "⽔温超过85℃",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "伪⽕",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "⽔泵堵转",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "风压异常",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "冷凝⽔排放通道堵塞",
+ "solution": [
+ "1、检查冷凝⽔排⽔管是否堵塞",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "En",
+ "phenomenon": "定时时间到",
+ "solution": [
+ "1、关⽔,关机,重新启动热⽔器"
+ ]
+ },
+ {
+ "errorCode": "F3",
+ "phenomenon": "进⽔温度传感器故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F5",
+ "phenomenon": "防冻探头故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F6",
+ "phenomenon": "CO或者CH4报警",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
new file mode 100644
index 0000000..c87706a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel
+
+class FaultDescAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.errorCodeView.text = rowsModel.errorCode
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val errorCodeView: TextView = itemView.findViewById(R.id.errorCodeView)
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
new file mode 100644
index 0000000..2da7ff4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel2
+
+class FaultDescAdapter2(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l_2, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.reasonRecyclerView.adapter = SolutionAdapter(context, rowsModel.reason)
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val reasonRecyclerView: RecyclerView = itemView.findViewById(R.id.reasonRecyclerView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
new file mode 100644
index 0000000..1a9453f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
@@ -0,0 +1,32 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+
+class SolutionAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_solution_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ holder.solutionView.text = dataRows[position]
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val solutionView: TextView = itemView.findViewById(R.id.solutionView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel.java b/app/src/main/java/com/casic/br/model/SolutionModel.java
new file mode 100644
index 0000000..3b4abe4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel {
+
+ private String errorCode;
+ private String phenomenon;
+ private List solution;
+
+ public String getErrorCode() {
+ return errorCode;
+ }
+
+ public void setErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26fd5a9..c742743 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,6 +89,7 @@
+
1°C时,水泵开始运行,屏幕显示E0故障代码,轻触开关键方可解除故障。"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点火故障,点火失败或中途意外熄火",
+ "solution": [
+ "先检查所有的燃气阀门是否打开,并确保此时有燃气供应,然后再按开关键,使壁挂炉重新启动,如果仍不能启动燃烧,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "风机或风压故障",
+ "solution": [
+ "关闭壁挂炉,检查排烟管是否堵塞,如果有堵塞物,将其清除即可重新启动运行,如果仍不能启动或多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "机械温控器故障",
+ "solution": [
+ "当壁挂炉内部水温降至60℃以下时,按动开关键,即可解除故障锁定状态。如果多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "洗浴温度传感器故障",
+ "solution": [
+ "壁挂炉洗浴温度传感器断线或不正常,此故障需与专业人员联系解决。"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "温度探头超温保护",
+ "solution": [
+ "当温度探头检测到水温或烟温,达到或超过最高温度时,报E5故障并进入故障锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "火焰检测故障",
+ "solution": [
+ "系统开始点火燃烧前,检测到有火焰信号,或关闭截止阀后,检测到有火焰信号,诊断为伪火或残火故障,进入锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "水压故障",
+ "solution": [
+ "关闭壁挂炉并关闭壁挂炉电源,逆时针旋转补水阀旋钮补水,观察显示屏上的压力显示值,当水压显示值在0.1~0.15MPa之间时,顺时针旋紧补水阀,然后接通电源,启动壁挂炉。"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "供暖温度传感器故障",
+ "solution": [
+ "壁挂炉供暧温度传感器断线或不正常,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "EEPROM故障",
+ "solution": [
+ "在系统数据改变或存储的数据发生错误时,显示此故障,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "EF",
+ "phenomenon": "冷凝水堵塞故障",
+ "solution": [
+ "关闭壁挂炉电源,检査冷凝水排水管是否堵塞,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "",
+ "phenomenon": "显示屏没有接收到主电路板的信号",
+ "solution": [
+ "按动开关键,若不能解除,切断壁挂炉电源后,再重新接通电源,若尝试几次均无效时,请与专业人员联系。"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/assets/waterheater_fault_desc.json b/app/src/main/assets/waterheater_fault_desc.json
new file mode 100644
index 0000000..f476052
--- /dev/null
+++ b/app/src/main/assets/waterheater_fault_desc.json
@@ -0,0 +1,108 @@
+[
+ {
+ "errorCode": "E0",
+ "phenomenon": "残⽕",
+ "solution": [
+ "1、请关闭燃⽓阀⻔并切断热⽔器电源",
+ "2、请联系本公司售后,待售后⼈员排除热⽔器故障后⽅可恢复使⽤"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点⽕失败意外熄⽕",
+ "solution": [
+ "1、检查燃⽓开关是否打开,燃⽓管道或燃⽓罐是否有⽓",
+ "2、关⽔,重新启动",
+ "3、液化⽯油⽓⽓压⾼(减压阀坏)"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "电机故障或者烟道堵塞",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "过热保护或者温控器或电磁阀开路",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "感温器短路或开路",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "⽔温超过85℃",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "伪⽕",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "⽔泵堵转",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "风压异常",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "冷凝⽔排放通道堵塞",
+ "solution": [
+ "1、检查冷凝⽔排⽔管是否堵塞",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "En",
+ "phenomenon": "定时时间到",
+ "solution": [
+ "1、关⽔,关机,重新启动热⽔器"
+ ]
+ },
+ {
+ "errorCode": "F3",
+ "phenomenon": "进⽔温度传感器故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F5",
+ "phenomenon": "防冻探头故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F6",
+ "phenomenon": "CO或者CH4报警",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
new file mode 100644
index 0000000..c87706a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel
+
+class FaultDescAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.errorCodeView.text = rowsModel.errorCode
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val errorCodeView: TextView = itemView.findViewById(R.id.errorCodeView)
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
new file mode 100644
index 0000000..2da7ff4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel2
+
+class FaultDescAdapter2(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l_2, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.reasonRecyclerView.adapter = SolutionAdapter(context, rowsModel.reason)
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val reasonRecyclerView: RecyclerView = itemView.findViewById(R.id.reasonRecyclerView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
new file mode 100644
index 0000000..1a9453f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
@@ -0,0 +1,32 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+
+class SolutionAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_solution_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ holder.solutionView.text = dataRows[position]
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val solutionView: TextView = itemView.findViewById(R.id.solutionView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel.java b/app/src/main/java/com/casic/br/model/SolutionModel.java
new file mode 100644
index 0000000..3b4abe4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel {
+
+ private String errorCode;
+ private String phenomenon;
+ private List solution;
+
+ public String getErrorCode() {
+ return errorCode;
+ }
+
+ public void setErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel2.java b/app/src/main/java/com/casic/br/model/SolutionModel2.java
new file mode 100644
index 0000000..2721836
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel2.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel2 {
+
+ private String phenomenon;
+ private List reason;
+ private List solution;
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getReason() {
+ return reason;
+ }
+
+ public void setReason(List reason) {
+ this.reason = reason;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26fd5a9..c742743 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,6 +89,7 @@
+
1°C时,水泵开始运行,屏幕显示E0故障代码,轻触开关键方可解除故障。"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点火故障,点火失败或中途意外熄火",
+ "solution": [
+ "先检查所有的燃气阀门是否打开,并确保此时有燃气供应,然后再按开关键,使壁挂炉重新启动,如果仍不能启动燃烧,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "风机或风压故障",
+ "solution": [
+ "关闭壁挂炉,检查排烟管是否堵塞,如果有堵塞物,将其清除即可重新启动运行,如果仍不能启动或多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "机械温控器故障",
+ "solution": [
+ "当壁挂炉内部水温降至60℃以下时,按动开关键,即可解除故障锁定状态。如果多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "洗浴温度传感器故障",
+ "solution": [
+ "壁挂炉洗浴温度传感器断线或不正常,此故障需与专业人员联系解决。"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "温度探头超温保护",
+ "solution": [
+ "当温度探头检测到水温或烟温,达到或超过最高温度时,报E5故障并进入故障锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "火焰检测故障",
+ "solution": [
+ "系统开始点火燃烧前,检测到有火焰信号,或关闭截止阀后,检测到有火焰信号,诊断为伪火或残火故障,进入锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "水压故障",
+ "solution": [
+ "关闭壁挂炉并关闭壁挂炉电源,逆时针旋转补水阀旋钮补水,观察显示屏上的压力显示值,当水压显示值在0.1~0.15MPa之间时,顺时针旋紧补水阀,然后接通电源,启动壁挂炉。"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "供暖温度传感器故障",
+ "solution": [
+ "壁挂炉供暧温度传感器断线或不正常,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "EEPROM故障",
+ "solution": [
+ "在系统数据改变或存储的数据发生错误时,显示此故障,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "EF",
+ "phenomenon": "冷凝水堵塞故障",
+ "solution": [
+ "关闭壁挂炉电源,检査冷凝水排水管是否堵塞,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "",
+ "phenomenon": "显示屏没有接收到主电路板的信号",
+ "solution": [
+ "按动开关键,若不能解除,切断壁挂炉电源后,再重新接通电源,若尝试几次均无效时,请与专业人员联系。"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/assets/waterheater_fault_desc.json b/app/src/main/assets/waterheater_fault_desc.json
new file mode 100644
index 0000000..f476052
--- /dev/null
+++ b/app/src/main/assets/waterheater_fault_desc.json
@@ -0,0 +1,108 @@
+[
+ {
+ "errorCode": "E0",
+ "phenomenon": "残⽕",
+ "solution": [
+ "1、请关闭燃⽓阀⻔并切断热⽔器电源",
+ "2、请联系本公司售后,待售后⼈员排除热⽔器故障后⽅可恢复使⽤"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点⽕失败意外熄⽕",
+ "solution": [
+ "1、检查燃⽓开关是否打开,燃⽓管道或燃⽓罐是否有⽓",
+ "2、关⽔,重新启动",
+ "3、液化⽯油⽓⽓压⾼(减压阀坏)"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "电机故障或者烟道堵塞",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "过热保护或者温控器或电磁阀开路",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "感温器短路或开路",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "⽔温超过85℃",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "伪⽕",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "⽔泵堵转",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "风压异常",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "冷凝⽔排放通道堵塞",
+ "solution": [
+ "1、检查冷凝⽔排⽔管是否堵塞",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "En",
+ "phenomenon": "定时时间到",
+ "solution": [
+ "1、关⽔,关机,重新启动热⽔器"
+ ]
+ },
+ {
+ "errorCode": "F3",
+ "phenomenon": "进⽔温度传感器故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F5",
+ "phenomenon": "防冻探头故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F6",
+ "phenomenon": "CO或者CH4报警",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
new file mode 100644
index 0000000..c87706a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel
+
+class FaultDescAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.errorCodeView.text = rowsModel.errorCode
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val errorCodeView: TextView = itemView.findViewById(R.id.errorCodeView)
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
new file mode 100644
index 0000000..2da7ff4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel2
+
+class FaultDescAdapter2(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l_2, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.reasonRecyclerView.adapter = SolutionAdapter(context, rowsModel.reason)
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val reasonRecyclerView: RecyclerView = itemView.findViewById(R.id.reasonRecyclerView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
new file mode 100644
index 0000000..1a9453f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
@@ -0,0 +1,32 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+
+class SolutionAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_solution_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ holder.solutionView.text = dataRows[position]
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val solutionView: TextView = itemView.findViewById(R.id.solutionView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel.java b/app/src/main/java/com/casic/br/model/SolutionModel.java
new file mode 100644
index 0000000..3b4abe4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel {
+
+ private String errorCode;
+ private String phenomenon;
+ private List solution;
+
+ public String getErrorCode() {
+ return errorCode;
+ }
+
+ public void setErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel2.java b/app/src/main/java/com/casic/br/model/SolutionModel2.java
new file mode 100644
index 0000000..2721836
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel2.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel2 {
+
+ private String phenomenon;
+ private List reason;
+ private List solution;
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getReason() {
+ return reason;
+ }
+
+ public void setReason(List reason) {
+ this.reason = reason;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt b/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt
new file mode 100644
index 0000000..6cc61d3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt
@@ -0,0 +1,66 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.casic.br.adapter.FaultDescAdapter
+import com.casic.br.adapter.FaultDescAdapter2
+import com.casic.br.model.SolutionModel
+import com.casic.br.model.SolutionModel2
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.readAssetsFile
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.activity_fault_description.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class FaultDescriptionActivity : KotlinBaseActivity() {
+
+ private val gson by lazy { Gson() }
+
+ override fun initLayoutView(): Int = R.layout.activity_fault_description
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "故障说明"
+ }
+
+ override fun initData() {
+ when (intent.getStringExtra(Constant.INTENT_PARAM)!!) {
+ "燃气灶" -> {
+ val assetsContent = readAssetsFile("cooker_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter2(this, descModels)
+ }
+ "壁挂炉" -> {
+ val assetsContent = readAssetsFile("fireplace_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter(this, descModels)
+ }
+ "热水器" -> {
+ val assetsContent = readAssetsFile("waterheater_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter(this, descModels)
+ }
+ }
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26fd5a9..c742743 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,6 +89,7 @@
+
1°C时,水泵开始运行,屏幕显示E0故障代码,轻触开关键方可解除故障。"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点火故障,点火失败或中途意外熄火",
+ "solution": [
+ "先检查所有的燃气阀门是否打开,并确保此时有燃气供应,然后再按开关键,使壁挂炉重新启动,如果仍不能启动燃烧,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "风机或风压故障",
+ "solution": [
+ "关闭壁挂炉,检查排烟管是否堵塞,如果有堵塞物,将其清除即可重新启动运行,如果仍不能启动或多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "机械温控器故障",
+ "solution": [
+ "当壁挂炉内部水温降至60℃以下时,按动开关键,即可解除故障锁定状态。如果多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "洗浴温度传感器故障",
+ "solution": [
+ "壁挂炉洗浴温度传感器断线或不正常,此故障需与专业人员联系解决。"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "温度探头超温保护",
+ "solution": [
+ "当温度探头检测到水温或烟温,达到或超过最高温度时,报E5故障并进入故障锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "火焰检测故障",
+ "solution": [
+ "系统开始点火燃烧前,检测到有火焰信号,或关闭截止阀后,检测到有火焰信号,诊断为伪火或残火故障,进入锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "水压故障",
+ "solution": [
+ "关闭壁挂炉并关闭壁挂炉电源,逆时针旋转补水阀旋钮补水,观察显示屏上的压力显示值,当水压显示值在0.1~0.15MPa之间时,顺时针旋紧补水阀,然后接通电源,启动壁挂炉。"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "供暖温度传感器故障",
+ "solution": [
+ "壁挂炉供暧温度传感器断线或不正常,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "EEPROM故障",
+ "solution": [
+ "在系统数据改变或存储的数据发生错误时,显示此故障,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "EF",
+ "phenomenon": "冷凝水堵塞故障",
+ "solution": [
+ "关闭壁挂炉电源,检査冷凝水排水管是否堵塞,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "",
+ "phenomenon": "显示屏没有接收到主电路板的信号",
+ "solution": [
+ "按动开关键,若不能解除,切断壁挂炉电源后,再重新接通电源,若尝试几次均无效时,请与专业人员联系。"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/assets/waterheater_fault_desc.json b/app/src/main/assets/waterheater_fault_desc.json
new file mode 100644
index 0000000..f476052
--- /dev/null
+++ b/app/src/main/assets/waterheater_fault_desc.json
@@ -0,0 +1,108 @@
+[
+ {
+ "errorCode": "E0",
+ "phenomenon": "残⽕",
+ "solution": [
+ "1、请关闭燃⽓阀⻔并切断热⽔器电源",
+ "2、请联系本公司售后,待售后⼈员排除热⽔器故障后⽅可恢复使⽤"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点⽕失败意外熄⽕",
+ "solution": [
+ "1、检查燃⽓开关是否打开,燃⽓管道或燃⽓罐是否有⽓",
+ "2、关⽔,重新启动",
+ "3、液化⽯油⽓⽓压⾼(减压阀坏)"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "电机故障或者烟道堵塞",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "过热保护或者温控器或电磁阀开路",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "感温器短路或开路",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "⽔温超过85℃",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "伪⽕",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "⽔泵堵转",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "风压异常",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "冷凝⽔排放通道堵塞",
+ "solution": [
+ "1、检查冷凝⽔排⽔管是否堵塞",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "En",
+ "phenomenon": "定时时间到",
+ "solution": [
+ "1、关⽔,关机,重新启动热⽔器"
+ ]
+ },
+ {
+ "errorCode": "F3",
+ "phenomenon": "进⽔温度传感器故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F5",
+ "phenomenon": "防冻探头故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F6",
+ "phenomenon": "CO或者CH4报警",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
new file mode 100644
index 0000000..c87706a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel
+
+class FaultDescAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.errorCodeView.text = rowsModel.errorCode
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val errorCodeView: TextView = itemView.findViewById(R.id.errorCodeView)
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
new file mode 100644
index 0000000..2da7ff4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel2
+
+class FaultDescAdapter2(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l_2, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.reasonRecyclerView.adapter = SolutionAdapter(context, rowsModel.reason)
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val reasonRecyclerView: RecyclerView = itemView.findViewById(R.id.reasonRecyclerView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
new file mode 100644
index 0000000..1a9453f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
@@ -0,0 +1,32 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+
+class SolutionAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_solution_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ holder.solutionView.text = dataRows[position]
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val solutionView: TextView = itemView.findViewById(R.id.solutionView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel.java b/app/src/main/java/com/casic/br/model/SolutionModel.java
new file mode 100644
index 0000000..3b4abe4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel {
+
+ private String errorCode;
+ private String phenomenon;
+ private List solution;
+
+ public String getErrorCode() {
+ return errorCode;
+ }
+
+ public void setErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel2.java b/app/src/main/java/com/casic/br/model/SolutionModel2.java
new file mode 100644
index 0000000..2721836
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel2.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel2 {
+
+ private String phenomenon;
+ private List reason;
+ private List solution;
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getReason() {
+ return reason;
+ }
+
+ public void setReason(List reason) {
+ this.reason = reason;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt b/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt
new file mode 100644
index 0000000..6cc61d3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt
@@ -0,0 +1,66 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.casic.br.adapter.FaultDescAdapter
+import com.casic.br.adapter.FaultDescAdapter2
+import com.casic.br.model.SolutionModel
+import com.casic.br.model.SolutionModel2
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.readAssetsFile
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.activity_fault_description.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class FaultDescriptionActivity : KotlinBaseActivity() {
+
+ private val gson by lazy { Gson() }
+
+ override fun initLayoutView(): Int = R.layout.activity_fault_description
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "故障说明"
+ }
+
+ override fun initData() {
+ when (intent.getStringExtra(Constant.INTENT_PARAM)!!) {
+ "燃气灶" -> {
+ val assetsContent = readAssetsFile("cooker_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter2(this, descModels)
+ }
+ "壁挂炉" -> {
+ val assetsContent = readAssetsFile("fireplace_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter(this, descModels)
+ }
+ "热水器" -> {
+ val assetsContent = readAssetsFile("waterheater_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter(this, descModels)
+ }
+ }
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
index ed0670c..f39819c 100644
--- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
@@ -16,9 +16,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -102,7 +104,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -146,6 +148,7 @@
finish()
}
})
+ 2 -> navigatePageTo("燃气灶")
}
}
})
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26fd5a9..c742743 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,6 +89,7 @@
+
1°C时,水泵开始运行,屏幕显示E0故障代码,轻触开关键方可解除故障。"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点火故障,点火失败或中途意外熄火",
+ "solution": [
+ "先检查所有的燃气阀门是否打开,并确保此时有燃气供应,然后再按开关键,使壁挂炉重新启动,如果仍不能启动燃烧,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "风机或风压故障",
+ "solution": [
+ "关闭壁挂炉,检查排烟管是否堵塞,如果有堵塞物,将其清除即可重新启动运行,如果仍不能启动或多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "机械温控器故障",
+ "solution": [
+ "当壁挂炉内部水温降至60℃以下时,按动开关键,即可解除故障锁定状态。如果多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "洗浴温度传感器故障",
+ "solution": [
+ "壁挂炉洗浴温度传感器断线或不正常,此故障需与专业人员联系解决。"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "温度探头超温保护",
+ "solution": [
+ "当温度探头检测到水温或烟温,达到或超过最高温度时,报E5故障并进入故障锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "火焰检测故障",
+ "solution": [
+ "系统开始点火燃烧前,检测到有火焰信号,或关闭截止阀后,检测到有火焰信号,诊断为伪火或残火故障,进入锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "水压故障",
+ "solution": [
+ "关闭壁挂炉并关闭壁挂炉电源,逆时针旋转补水阀旋钮补水,观察显示屏上的压力显示值,当水压显示值在0.1~0.15MPa之间时,顺时针旋紧补水阀,然后接通电源,启动壁挂炉。"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "供暖温度传感器故障",
+ "solution": [
+ "壁挂炉供暧温度传感器断线或不正常,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "EEPROM故障",
+ "solution": [
+ "在系统数据改变或存储的数据发生错误时,显示此故障,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "EF",
+ "phenomenon": "冷凝水堵塞故障",
+ "solution": [
+ "关闭壁挂炉电源,检査冷凝水排水管是否堵塞,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "",
+ "phenomenon": "显示屏没有接收到主电路板的信号",
+ "solution": [
+ "按动开关键,若不能解除,切断壁挂炉电源后,再重新接通电源,若尝试几次均无效时,请与专业人员联系。"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/assets/waterheater_fault_desc.json b/app/src/main/assets/waterheater_fault_desc.json
new file mode 100644
index 0000000..f476052
--- /dev/null
+++ b/app/src/main/assets/waterheater_fault_desc.json
@@ -0,0 +1,108 @@
+[
+ {
+ "errorCode": "E0",
+ "phenomenon": "残⽕",
+ "solution": [
+ "1、请关闭燃⽓阀⻔并切断热⽔器电源",
+ "2、请联系本公司售后,待售后⼈员排除热⽔器故障后⽅可恢复使⽤"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点⽕失败意外熄⽕",
+ "solution": [
+ "1、检查燃⽓开关是否打开,燃⽓管道或燃⽓罐是否有⽓",
+ "2、关⽔,重新启动",
+ "3、液化⽯油⽓⽓压⾼(减压阀坏)"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "电机故障或者烟道堵塞",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "过热保护或者温控器或电磁阀开路",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "感温器短路或开路",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "⽔温超过85℃",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "伪⽕",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "⽔泵堵转",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "风压异常",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "冷凝⽔排放通道堵塞",
+ "solution": [
+ "1、检查冷凝⽔排⽔管是否堵塞",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "En",
+ "phenomenon": "定时时间到",
+ "solution": [
+ "1、关⽔,关机,重新启动热⽔器"
+ ]
+ },
+ {
+ "errorCode": "F3",
+ "phenomenon": "进⽔温度传感器故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F5",
+ "phenomenon": "防冻探头故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F6",
+ "phenomenon": "CO或者CH4报警",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
new file mode 100644
index 0000000..c87706a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel
+
+class FaultDescAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.errorCodeView.text = rowsModel.errorCode
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val errorCodeView: TextView = itemView.findViewById(R.id.errorCodeView)
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
new file mode 100644
index 0000000..2da7ff4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel2
+
+class FaultDescAdapter2(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l_2, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.reasonRecyclerView.adapter = SolutionAdapter(context, rowsModel.reason)
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val reasonRecyclerView: RecyclerView = itemView.findViewById(R.id.reasonRecyclerView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
new file mode 100644
index 0000000..1a9453f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
@@ -0,0 +1,32 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+
+class SolutionAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_solution_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ holder.solutionView.text = dataRows[position]
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val solutionView: TextView = itemView.findViewById(R.id.solutionView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel.java b/app/src/main/java/com/casic/br/model/SolutionModel.java
new file mode 100644
index 0000000..3b4abe4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel {
+
+ private String errorCode;
+ private String phenomenon;
+ private List solution;
+
+ public String getErrorCode() {
+ return errorCode;
+ }
+
+ public void setErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel2.java b/app/src/main/java/com/casic/br/model/SolutionModel2.java
new file mode 100644
index 0000000..2721836
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel2.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel2 {
+
+ private String phenomenon;
+ private List reason;
+ private List solution;
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getReason() {
+ return reason;
+ }
+
+ public void setReason(List reason) {
+ this.reason = reason;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt b/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt
new file mode 100644
index 0000000..6cc61d3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt
@@ -0,0 +1,66 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.casic.br.adapter.FaultDescAdapter
+import com.casic.br.adapter.FaultDescAdapter2
+import com.casic.br.model.SolutionModel
+import com.casic.br.model.SolutionModel2
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.readAssetsFile
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.activity_fault_description.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class FaultDescriptionActivity : KotlinBaseActivity() {
+
+ private val gson by lazy { Gson() }
+
+ override fun initLayoutView(): Int = R.layout.activity_fault_description
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "故障说明"
+ }
+
+ override fun initData() {
+ when (intent.getStringExtra(Constant.INTENT_PARAM)!!) {
+ "燃气灶" -> {
+ val assetsContent = readAssetsFile("cooker_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter2(this, descModels)
+ }
+ "壁挂炉" -> {
+ val assetsContent = readAssetsFile("fireplace_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter(this, descModels)
+ }
+ "热水器" -> {
+ val assetsContent = readAssetsFile("waterheater_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter(this, descModels)
+ }
+ }
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
index ed0670c..f39819c 100644
--- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
@@ -16,9 +16,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -102,7 +104,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -146,6 +148,7 @@
finish()
}
})
+ 2 -> navigatePageTo("燃气灶")
}
}
})
diff --git a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
index fd54cb1..458b841 100644
--- a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
@@ -17,9 +17,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -103,7 +105,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -147,6 +149,7 @@
finish()
}
})
+ 2 -> navigatePageTo("壁挂炉")
}
}
})
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26fd5a9..c742743 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,6 +89,7 @@
+
1°C时,水泵开始运行,屏幕显示E0故障代码,轻触开关键方可解除故障。"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点火故障,点火失败或中途意外熄火",
+ "solution": [
+ "先检查所有的燃气阀门是否打开,并确保此时有燃气供应,然后再按开关键,使壁挂炉重新启动,如果仍不能启动燃烧,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "风机或风压故障",
+ "solution": [
+ "关闭壁挂炉,检查排烟管是否堵塞,如果有堵塞物,将其清除即可重新启动运行,如果仍不能启动或多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "机械温控器故障",
+ "solution": [
+ "当壁挂炉内部水温降至60℃以下时,按动开关键,即可解除故障锁定状态。如果多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "洗浴温度传感器故障",
+ "solution": [
+ "壁挂炉洗浴温度传感器断线或不正常,此故障需与专业人员联系解决。"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "温度探头超温保护",
+ "solution": [
+ "当温度探头检测到水温或烟温,达到或超过最高温度时,报E5故障并进入故障锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "火焰检测故障",
+ "solution": [
+ "系统开始点火燃烧前,检测到有火焰信号,或关闭截止阀后,检测到有火焰信号,诊断为伪火或残火故障,进入锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "水压故障",
+ "solution": [
+ "关闭壁挂炉并关闭壁挂炉电源,逆时针旋转补水阀旋钮补水,观察显示屏上的压力显示值,当水压显示值在0.1~0.15MPa之间时,顺时针旋紧补水阀,然后接通电源,启动壁挂炉。"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "供暖温度传感器故障",
+ "solution": [
+ "壁挂炉供暧温度传感器断线或不正常,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "EEPROM故障",
+ "solution": [
+ "在系统数据改变或存储的数据发生错误时,显示此故障,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "EF",
+ "phenomenon": "冷凝水堵塞故障",
+ "solution": [
+ "关闭壁挂炉电源,检査冷凝水排水管是否堵塞,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "",
+ "phenomenon": "显示屏没有接收到主电路板的信号",
+ "solution": [
+ "按动开关键,若不能解除,切断壁挂炉电源后,再重新接通电源,若尝试几次均无效时,请与专业人员联系。"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/assets/waterheater_fault_desc.json b/app/src/main/assets/waterheater_fault_desc.json
new file mode 100644
index 0000000..f476052
--- /dev/null
+++ b/app/src/main/assets/waterheater_fault_desc.json
@@ -0,0 +1,108 @@
+[
+ {
+ "errorCode": "E0",
+ "phenomenon": "残⽕",
+ "solution": [
+ "1、请关闭燃⽓阀⻔并切断热⽔器电源",
+ "2、请联系本公司售后,待售后⼈员排除热⽔器故障后⽅可恢复使⽤"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点⽕失败意外熄⽕",
+ "solution": [
+ "1、检查燃⽓开关是否打开,燃⽓管道或燃⽓罐是否有⽓",
+ "2、关⽔,重新启动",
+ "3、液化⽯油⽓⽓压⾼(减压阀坏)"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "电机故障或者烟道堵塞",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "过热保护或者温控器或电磁阀开路",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "感温器短路或开路",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "⽔温超过85℃",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "伪⽕",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "⽔泵堵转",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "风压异常",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "冷凝⽔排放通道堵塞",
+ "solution": [
+ "1、检查冷凝⽔排⽔管是否堵塞",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "En",
+ "phenomenon": "定时时间到",
+ "solution": [
+ "1、关⽔,关机,重新启动热⽔器"
+ ]
+ },
+ {
+ "errorCode": "F3",
+ "phenomenon": "进⽔温度传感器故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F5",
+ "phenomenon": "防冻探头故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F6",
+ "phenomenon": "CO或者CH4报警",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
new file mode 100644
index 0000000..c87706a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel
+
+class FaultDescAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.errorCodeView.text = rowsModel.errorCode
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val errorCodeView: TextView = itemView.findViewById(R.id.errorCodeView)
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
new file mode 100644
index 0000000..2da7ff4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel2
+
+class FaultDescAdapter2(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l_2, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.reasonRecyclerView.adapter = SolutionAdapter(context, rowsModel.reason)
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val reasonRecyclerView: RecyclerView = itemView.findViewById(R.id.reasonRecyclerView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
new file mode 100644
index 0000000..1a9453f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
@@ -0,0 +1,32 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+
+class SolutionAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_solution_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ holder.solutionView.text = dataRows[position]
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val solutionView: TextView = itemView.findViewById(R.id.solutionView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel.java b/app/src/main/java/com/casic/br/model/SolutionModel.java
new file mode 100644
index 0000000..3b4abe4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel {
+
+ private String errorCode;
+ private String phenomenon;
+ private List solution;
+
+ public String getErrorCode() {
+ return errorCode;
+ }
+
+ public void setErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel2.java b/app/src/main/java/com/casic/br/model/SolutionModel2.java
new file mode 100644
index 0000000..2721836
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel2.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel2 {
+
+ private String phenomenon;
+ private List reason;
+ private List solution;
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getReason() {
+ return reason;
+ }
+
+ public void setReason(List reason) {
+ this.reason = reason;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt b/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt
new file mode 100644
index 0000000..6cc61d3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt
@@ -0,0 +1,66 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.casic.br.adapter.FaultDescAdapter
+import com.casic.br.adapter.FaultDescAdapter2
+import com.casic.br.model.SolutionModel
+import com.casic.br.model.SolutionModel2
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.readAssetsFile
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.activity_fault_description.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class FaultDescriptionActivity : KotlinBaseActivity() {
+
+ private val gson by lazy { Gson() }
+
+ override fun initLayoutView(): Int = R.layout.activity_fault_description
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "故障说明"
+ }
+
+ override fun initData() {
+ when (intent.getStringExtra(Constant.INTENT_PARAM)!!) {
+ "燃气灶" -> {
+ val assetsContent = readAssetsFile("cooker_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter2(this, descModels)
+ }
+ "壁挂炉" -> {
+ val assetsContent = readAssetsFile("fireplace_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter(this, descModels)
+ }
+ "热水器" -> {
+ val assetsContent = readAssetsFile("waterheater_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter(this, descModels)
+ }
+ }
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
index ed0670c..f39819c 100644
--- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
@@ -16,9 +16,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -102,7 +104,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -146,6 +148,7 @@
finish()
}
})
+ 2 -> navigatePageTo("燃气灶")
}
}
})
diff --git a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
index fd54cb1..458b841 100644
--- a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
@@ -17,9 +17,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -103,7 +105,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -147,6 +149,7 @@
finish()
}
})
+ 2 -> navigatePageTo("壁挂炉")
}
}
})
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 22685d9..299155a 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -18,9 +18,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -111,7 +113,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -155,6 +157,7 @@
finish()
}
})
+ 2 -> navigatePageTo("热水器")
}
}
})
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26fd5a9..c742743 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,6 +89,7 @@
+
1°C时,水泵开始运行,屏幕显示E0故障代码,轻触开关键方可解除故障。"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点火故障,点火失败或中途意外熄火",
+ "solution": [
+ "先检查所有的燃气阀门是否打开,并确保此时有燃气供应,然后再按开关键,使壁挂炉重新启动,如果仍不能启动燃烧,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "风机或风压故障",
+ "solution": [
+ "关闭壁挂炉,检查排烟管是否堵塞,如果有堵塞物,将其清除即可重新启动运行,如果仍不能启动或多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "机械温控器故障",
+ "solution": [
+ "当壁挂炉内部水温降至60℃以下时,按动开关键,即可解除故障锁定状态。如果多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "洗浴温度传感器故障",
+ "solution": [
+ "壁挂炉洗浴温度传感器断线或不正常,此故障需与专业人员联系解决。"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "温度探头超温保护",
+ "solution": [
+ "当温度探头检测到水温或烟温,达到或超过最高温度时,报E5故障并进入故障锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "火焰检测故障",
+ "solution": [
+ "系统开始点火燃烧前,检测到有火焰信号,或关闭截止阀后,检测到有火焰信号,诊断为伪火或残火故障,进入锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "水压故障",
+ "solution": [
+ "关闭壁挂炉并关闭壁挂炉电源,逆时针旋转补水阀旋钮补水,观察显示屏上的压力显示值,当水压显示值在0.1~0.15MPa之间时,顺时针旋紧补水阀,然后接通电源,启动壁挂炉。"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "供暖温度传感器故障",
+ "solution": [
+ "壁挂炉供暧温度传感器断线或不正常,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "EEPROM故障",
+ "solution": [
+ "在系统数据改变或存储的数据发生错误时,显示此故障,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "EF",
+ "phenomenon": "冷凝水堵塞故障",
+ "solution": [
+ "关闭壁挂炉电源,检査冷凝水排水管是否堵塞,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "",
+ "phenomenon": "显示屏没有接收到主电路板的信号",
+ "solution": [
+ "按动开关键,若不能解除,切断壁挂炉电源后,再重新接通电源,若尝试几次均无效时,请与专业人员联系。"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/assets/waterheater_fault_desc.json b/app/src/main/assets/waterheater_fault_desc.json
new file mode 100644
index 0000000..f476052
--- /dev/null
+++ b/app/src/main/assets/waterheater_fault_desc.json
@@ -0,0 +1,108 @@
+[
+ {
+ "errorCode": "E0",
+ "phenomenon": "残⽕",
+ "solution": [
+ "1、请关闭燃⽓阀⻔并切断热⽔器电源",
+ "2、请联系本公司售后,待售后⼈员排除热⽔器故障后⽅可恢复使⽤"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点⽕失败意外熄⽕",
+ "solution": [
+ "1、检查燃⽓开关是否打开,燃⽓管道或燃⽓罐是否有⽓",
+ "2、关⽔,重新启动",
+ "3、液化⽯油⽓⽓压⾼(减压阀坏)"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "电机故障或者烟道堵塞",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "过热保护或者温控器或电磁阀开路",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "感温器短路或开路",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "⽔温超过85℃",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "伪⽕",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "⽔泵堵转",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "风压异常",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "冷凝⽔排放通道堵塞",
+ "solution": [
+ "1、检查冷凝⽔排⽔管是否堵塞",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "En",
+ "phenomenon": "定时时间到",
+ "solution": [
+ "1、关⽔,关机,重新启动热⽔器"
+ ]
+ },
+ {
+ "errorCode": "F3",
+ "phenomenon": "进⽔温度传感器故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F5",
+ "phenomenon": "防冻探头故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F6",
+ "phenomenon": "CO或者CH4报警",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
new file mode 100644
index 0000000..c87706a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel
+
+class FaultDescAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.errorCodeView.text = rowsModel.errorCode
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val errorCodeView: TextView = itemView.findViewById(R.id.errorCodeView)
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
new file mode 100644
index 0000000..2da7ff4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel2
+
+class FaultDescAdapter2(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l_2, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.reasonRecyclerView.adapter = SolutionAdapter(context, rowsModel.reason)
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val reasonRecyclerView: RecyclerView = itemView.findViewById(R.id.reasonRecyclerView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
new file mode 100644
index 0000000..1a9453f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
@@ -0,0 +1,32 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+
+class SolutionAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_solution_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ holder.solutionView.text = dataRows[position]
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val solutionView: TextView = itemView.findViewById(R.id.solutionView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel.java b/app/src/main/java/com/casic/br/model/SolutionModel.java
new file mode 100644
index 0000000..3b4abe4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel {
+
+ private String errorCode;
+ private String phenomenon;
+ private List solution;
+
+ public String getErrorCode() {
+ return errorCode;
+ }
+
+ public void setErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel2.java b/app/src/main/java/com/casic/br/model/SolutionModel2.java
new file mode 100644
index 0000000..2721836
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel2.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel2 {
+
+ private String phenomenon;
+ private List reason;
+ private List solution;
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getReason() {
+ return reason;
+ }
+
+ public void setReason(List reason) {
+ this.reason = reason;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt b/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt
new file mode 100644
index 0000000..6cc61d3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt
@@ -0,0 +1,66 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.casic.br.adapter.FaultDescAdapter
+import com.casic.br.adapter.FaultDescAdapter2
+import com.casic.br.model.SolutionModel
+import com.casic.br.model.SolutionModel2
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.readAssetsFile
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.activity_fault_description.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class FaultDescriptionActivity : KotlinBaseActivity() {
+
+ private val gson by lazy { Gson() }
+
+ override fun initLayoutView(): Int = R.layout.activity_fault_description
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "故障说明"
+ }
+
+ override fun initData() {
+ when (intent.getStringExtra(Constant.INTENT_PARAM)!!) {
+ "燃气灶" -> {
+ val assetsContent = readAssetsFile("cooker_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter2(this, descModels)
+ }
+ "壁挂炉" -> {
+ val assetsContent = readAssetsFile("fireplace_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter(this, descModels)
+ }
+ "热水器" -> {
+ val assetsContent = readAssetsFile("waterheater_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter(this, descModels)
+ }
+ }
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
index ed0670c..f39819c 100644
--- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
@@ -16,9 +16,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -102,7 +104,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -146,6 +148,7 @@
finish()
}
})
+ 2 -> navigatePageTo("燃气灶")
}
}
})
diff --git a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
index fd54cb1..458b841 100644
--- a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
@@ -17,9 +17,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -103,7 +105,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -147,6 +149,7 @@
finish()
}
})
+ 2 -> navigatePageTo("壁挂炉")
}
}
})
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 22685d9..299155a 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -18,9 +18,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -111,7 +113,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -155,6 +157,7 @@
finish()
}
})
+ 2 -> navigatePageTo("热水器")
}
}
})
diff --git a/app/src/main/res/layout/activity_fault_description.xml b/app/src/main/res/layout/activity_fault_description.xml
new file mode 100644
index 0000000..d9f76fe
--- /dev/null
+++ b/app/src/main/res/layout/activity_fault_description.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26fd5a9..c742743 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,6 +89,7 @@
+
1°C时,水泵开始运行,屏幕显示E0故障代码,轻触开关键方可解除故障。"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点火故障,点火失败或中途意外熄火",
+ "solution": [
+ "先检查所有的燃气阀门是否打开,并确保此时有燃气供应,然后再按开关键,使壁挂炉重新启动,如果仍不能启动燃烧,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "风机或风压故障",
+ "solution": [
+ "关闭壁挂炉,检查排烟管是否堵塞,如果有堵塞物,将其清除即可重新启动运行,如果仍不能启动或多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "机械温控器故障",
+ "solution": [
+ "当壁挂炉内部水温降至60℃以下时,按动开关键,即可解除故障锁定状态。如果多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "洗浴温度传感器故障",
+ "solution": [
+ "壁挂炉洗浴温度传感器断线或不正常,此故障需与专业人员联系解决。"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "温度探头超温保护",
+ "solution": [
+ "当温度探头检测到水温或烟温,达到或超过最高温度时,报E5故障并进入故障锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "火焰检测故障",
+ "solution": [
+ "系统开始点火燃烧前,检测到有火焰信号,或关闭截止阀后,检测到有火焰信号,诊断为伪火或残火故障,进入锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "水压故障",
+ "solution": [
+ "关闭壁挂炉并关闭壁挂炉电源,逆时针旋转补水阀旋钮补水,观察显示屏上的压力显示值,当水压显示值在0.1~0.15MPa之间时,顺时针旋紧补水阀,然后接通电源,启动壁挂炉。"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "供暖温度传感器故障",
+ "solution": [
+ "壁挂炉供暧温度传感器断线或不正常,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "EEPROM故障",
+ "solution": [
+ "在系统数据改变或存储的数据发生错误时,显示此故障,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "EF",
+ "phenomenon": "冷凝水堵塞故障",
+ "solution": [
+ "关闭壁挂炉电源,检査冷凝水排水管是否堵塞,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "",
+ "phenomenon": "显示屏没有接收到主电路板的信号",
+ "solution": [
+ "按动开关键,若不能解除,切断壁挂炉电源后,再重新接通电源,若尝试几次均无效时,请与专业人员联系。"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/assets/waterheater_fault_desc.json b/app/src/main/assets/waterheater_fault_desc.json
new file mode 100644
index 0000000..f476052
--- /dev/null
+++ b/app/src/main/assets/waterheater_fault_desc.json
@@ -0,0 +1,108 @@
+[
+ {
+ "errorCode": "E0",
+ "phenomenon": "残⽕",
+ "solution": [
+ "1、请关闭燃⽓阀⻔并切断热⽔器电源",
+ "2、请联系本公司售后,待售后⼈员排除热⽔器故障后⽅可恢复使⽤"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点⽕失败意外熄⽕",
+ "solution": [
+ "1、检查燃⽓开关是否打开,燃⽓管道或燃⽓罐是否有⽓",
+ "2、关⽔,重新启动",
+ "3、液化⽯油⽓⽓压⾼(减压阀坏)"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "电机故障或者烟道堵塞",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "过热保护或者温控器或电磁阀开路",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "感温器短路或开路",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "⽔温超过85℃",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "伪⽕",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "⽔泵堵转",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "风压异常",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "冷凝⽔排放通道堵塞",
+ "solution": [
+ "1、检查冷凝⽔排⽔管是否堵塞",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "En",
+ "phenomenon": "定时时间到",
+ "solution": [
+ "1、关⽔,关机,重新启动热⽔器"
+ ]
+ },
+ {
+ "errorCode": "F3",
+ "phenomenon": "进⽔温度传感器故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F5",
+ "phenomenon": "防冻探头故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F6",
+ "phenomenon": "CO或者CH4报警",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
new file mode 100644
index 0000000..c87706a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel
+
+class FaultDescAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.errorCodeView.text = rowsModel.errorCode
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val errorCodeView: TextView = itemView.findViewById(R.id.errorCodeView)
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
new file mode 100644
index 0000000..2da7ff4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel2
+
+class FaultDescAdapter2(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l_2, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.reasonRecyclerView.adapter = SolutionAdapter(context, rowsModel.reason)
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val reasonRecyclerView: RecyclerView = itemView.findViewById(R.id.reasonRecyclerView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
new file mode 100644
index 0000000..1a9453f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
@@ -0,0 +1,32 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+
+class SolutionAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_solution_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ holder.solutionView.text = dataRows[position]
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val solutionView: TextView = itemView.findViewById(R.id.solutionView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel.java b/app/src/main/java/com/casic/br/model/SolutionModel.java
new file mode 100644
index 0000000..3b4abe4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel {
+
+ private String errorCode;
+ private String phenomenon;
+ private List solution;
+
+ public String getErrorCode() {
+ return errorCode;
+ }
+
+ public void setErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel2.java b/app/src/main/java/com/casic/br/model/SolutionModel2.java
new file mode 100644
index 0000000..2721836
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel2.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel2 {
+
+ private String phenomenon;
+ private List reason;
+ private List solution;
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getReason() {
+ return reason;
+ }
+
+ public void setReason(List reason) {
+ this.reason = reason;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt b/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt
new file mode 100644
index 0000000..6cc61d3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt
@@ -0,0 +1,66 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.casic.br.adapter.FaultDescAdapter
+import com.casic.br.adapter.FaultDescAdapter2
+import com.casic.br.model.SolutionModel
+import com.casic.br.model.SolutionModel2
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.readAssetsFile
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.activity_fault_description.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class FaultDescriptionActivity : KotlinBaseActivity() {
+
+ private val gson by lazy { Gson() }
+
+ override fun initLayoutView(): Int = R.layout.activity_fault_description
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "故障说明"
+ }
+
+ override fun initData() {
+ when (intent.getStringExtra(Constant.INTENT_PARAM)!!) {
+ "燃气灶" -> {
+ val assetsContent = readAssetsFile("cooker_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter2(this, descModels)
+ }
+ "壁挂炉" -> {
+ val assetsContent = readAssetsFile("fireplace_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter(this, descModels)
+ }
+ "热水器" -> {
+ val assetsContent = readAssetsFile("waterheater_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter(this, descModels)
+ }
+ }
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
index ed0670c..f39819c 100644
--- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
@@ -16,9 +16,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -102,7 +104,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -146,6 +148,7 @@
finish()
}
})
+ 2 -> navigatePageTo("燃气灶")
}
}
})
diff --git a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
index fd54cb1..458b841 100644
--- a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
@@ -17,9 +17,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -103,7 +105,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -147,6 +149,7 @@
finish()
}
})
+ 2 -> navigatePageTo("壁挂炉")
}
}
})
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 22685d9..299155a 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -18,9 +18,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -111,7 +113,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -155,6 +157,7 @@
finish()
}
})
+ 2 -> navigatePageTo("热水器")
}
}
})
diff --git a/app/src/main/res/layout/activity_fault_description.xml b/app/src/main/res/layout/activity_fault_description.xml
new file mode 100644
index 0000000..d9f76fe
--- /dev/null
+++ b/app/src/main/res/layout/activity_fault_description.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_fault_desc_rv_l.xml b/app/src/main/res/layout/item_fault_desc_rv_l.xml
new file mode 100644
index 0000000..01bdb94
--- /dev/null
+++ b/app/src/main/res/layout/item_fault_desc_rv_l.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26fd5a9..c742743 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,6 +89,7 @@
+
1°C时,水泵开始运行,屏幕显示E0故障代码,轻触开关键方可解除故障。"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点火故障,点火失败或中途意外熄火",
+ "solution": [
+ "先检查所有的燃气阀门是否打开,并确保此时有燃气供应,然后再按开关键,使壁挂炉重新启动,如果仍不能启动燃烧,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "风机或风压故障",
+ "solution": [
+ "关闭壁挂炉,检查排烟管是否堵塞,如果有堵塞物,将其清除即可重新启动运行,如果仍不能启动或多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "机械温控器故障",
+ "solution": [
+ "当壁挂炉内部水温降至60℃以下时,按动开关键,即可解除故障锁定状态。如果多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "洗浴温度传感器故障",
+ "solution": [
+ "壁挂炉洗浴温度传感器断线或不正常,此故障需与专业人员联系解决。"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "温度探头超温保护",
+ "solution": [
+ "当温度探头检测到水温或烟温,达到或超过最高温度时,报E5故障并进入故障锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "火焰检测故障",
+ "solution": [
+ "系统开始点火燃烧前,检测到有火焰信号,或关闭截止阀后,检测到有火焰信号,诊断为伪火或残火故障,进入锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "水压故障",
+ "solution": [
+ "关闭壁挂炉并关闭壁挂炉电源,逆时针旋转补水阀旋钮补水,观察显示屏上的压力显示值,当水压显示值在0.1~0.15MPa之间时,顺时针旋紧补水阀,然后接通电源,启动壁挂炉。"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "供暖温度传感器故障",
+ "solution": [
+ "壁挂炉供暧温度传感器断线或不正常,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "EEPROM故障",
+ "solution": [
+ "在系统数据改变或存储的数据发生错误时,显示此故障,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "EF",
+ "phenomenon": "冷凝水堵塞故障",
+ "solution": [
+ "关闭壁挂炉电源,检査冷凝水排水管是否堵塞,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "",
+ "phenomenon": "显示屏没有接收到主电路板的信号",
+ "solution": [
+ "按动开关键,若不能解除,切断壁挂炉电源后,再重新接通电源,若尝试几次均无效时,请与专业人员联系。"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/assets/waterheater_fault_desc.json b/app/src/main/assets/waterheater_fault_desc.json
new file mode 100644
index 0000000..f476052
--- /dev/null
+++ b/app/src/main/assets/waterheater_fault_desc.json
@@ -0,0 +1,108 @@
+[
+ {
+ "errorCode": "E0",
+ "phenomenon": "残⽕",
+ "solution": [
+ "1、请关闭燃⽓阀⻔并切断热⽔器电源",
+ "2、请联系本公司售后,待售后⼈员排除热⽔器故障后⽅可恢复使⽤"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点⽕失败意外熄⽕",
+ "solution": [
+ "1、检查燃⽓开关是否打开,燃⽓管道或燃⽓罐是否有⽓",
+ "2、关⽔,重新启动",
+ "3、液化⽯油⽓⽓压⾼(减压阀坏)"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "电机故障或者烟道堵塞",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "过热保护或者温控器或电磁阀开路",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "感温器短路或开路",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "⽔温超过85℃",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "伪⽕",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "⽔泵堵转",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "风压异常",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "冷凝⽔排放通道堵塞",
+ "solution": [
+ "1、检查冷凝⽔排⽔管是否堵塞",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "En",
+ "phenomenon": "定时时间到",
+ "solution": [
+ "1、关⽔,关机,重新启动热⽔器"
+ ]
+ },
+ {
+ "errorCode": "F3",
+ "phenomenon": "进⽔温度传感器故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F5",
+ "phenomenon": "防冻探头故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F6",
+ "phenomenon": "CO或者CH4报警",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
new file mode 100644
index 0000000..c87706a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel
+
+class FaultDescAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.errorCodeView.text = rowsModel.errorCode
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val errorCodeView: TextView = itemView.findViewById(R.id.errorCodeView)
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
new file mode 100644
index 0000000..2da7ff4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel2
+
+class FaultDescAdapter2(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l_2, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.reasonRecyclerView.adapter = SolutionAdapter(context, rowsModel.reason)
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val reasonRecyclerView: RecyclerView = itemView.findViewById(R.id.reasonRecyclerView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
new file mode 100644
index 0000000..1a9453f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
@@ -0,0 +1,32 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+
+class SolutionAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_solution_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ holder.solutionView.text = dataRows[position]
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val solutionView: TextView = itemView.findViewById(R.id.solutionView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel.java b/app/src/main/java/com/casic/br/model/SolutionModel.java
new file mode 100644
index 0000000..3b4abe4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel {
+
+ private String errorCode;
+ private String phenomenon;
+ private List solution;
+
+ public String getErrorCode() {
+ return errorCode;
+ }
+
+ public void setErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel2.java b/app/src/main/java/com/casic/br/model/SolutionModel2.java
new file mode 100644
index 0000000..2721836
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel2.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel2 {
+
+ private String phenomenon;
+ private List reason;
+ private List solution;
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getReason() {
+ return reason;
+ }
+
+ public void setReason(List reason) {
+ this.reason = reason;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt b/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt
new file mode 100644
index 0000000..6cc61d3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt
@@ -0,0 +1,66 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.casic.br.adapter.FaultDescAdapter
+import com.casic.br.adapter.FaultDescAdapter2
+import com.casic.br.model.SolutionModel
+import com.casic.br.model.SolutionModel2
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.readAssetsFile
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.activity_fault_description.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class FaultDescriptionActivity : KotlinBaseActivity() {
+
+ private val gson by lazy { Gson() }
+
+ override fun initLayoutView(): Int = R.layout.activity_fault_description
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "故障说明"
+ }
+
+ override fun initData() {
+ when (intent.getStringExtra(Constant.INTENT_PARAM)!!) {
+ "燃气灶" -> {
+ val assetsContent = readAssetsFile("cooker_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter2(this, descModels)
+ }
+ "壁挂炉" -> {
+ val assetsContent = readAssetsFile("fireplace_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter(this, descModels)
+ }
+ "热水器" -> {
+ val assetsContent = readAssetsFile("waterheater_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter(this, descModels)
+ }
+ }
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
index ed0670c..f39819c 100644
--- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
@@ -16,9 +16,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -102,7 +104,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -146,6 +148,7 @@
finish()
}
})
+ 2 -> navigatePageTo("燃气灶")
}
}
})
diff --git a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
index fd54cb1..458b841 100644
--- a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
@@ -17,9 +17,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -103,7 +105,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -147,6 +149,7 @@
finish()
}
})
+ 2 -> navigatePageTo("壁挂炉")
}
}
})
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 22685d9..299155a 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -18,9 +18,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -111,7 +113,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -155,6 +157,7 @@
finish()
}
})
+ 2 -> navigatePageTo("热水器")
}
}
})
diff --git a/app/src/main/res/layout/activity_fault_description.xml b/app/src/main/res/layout/activity_fault_description.xml
new file mode 100644
index 0000000..d9f76fe
--- /dev/null
+++ b/app/src/main/res/layout/activity_fault_description.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_fault_desc_rv_l.xml b/app/src/main/res/layout/item_fault_desc_rv_l.xml
new file mode 100644
index 0000000..01bdb94
--- /dev/null
+++ b/app/src/main/res/layout/item_fault_desc_rv_l.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_fault_desc_rv_l_2.xml b/app/src/main/res/layout/item_fault_desc_rv_l_2.xml
new file mode 100644
index 0000000..16defee
--- /dev/null
+++ b/app/src/main/res/layout/item_fault_desc_rv_l_2.xml
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26fd5a9..c742743 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,6 +89,7 @@
+
1°C时,水泵开始运行,屏幕显示E0故障代码,轻触开关键方可解除故障。"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点火故障,点火失败或中途意外熄火",
+ "solution": [
+ "先检查所有的燃气阀门是否打开,并确保此时有燃气供应,然后再按开关键,使壁挂炉重新启动,如果仍不能启动燃烧,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "风机或风压故障",
+ "solution": [
+ "关闭壁挂炉,检查排烟管是否堵塞,如果有堵塞物,将其清除即可重新启动运行,如果仍不能启动或多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "机械温控器故障",
+ "solution": [
+ "当壁挂炉内部水温降至60℃以下时,按动开关键,即可解除故障锁定状态。如果多次出现该故障,应关闭壁挂炉,并与专业人员联系。"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "洗浴温度传感器故障",
+ "solution": [
+ "壁挂炉洗浴温度传感器断线或不正常,此故障需与专业人员联系解决。"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "温度探头超温保护",
+ "solution": [
+ "当温度探头检测到水温或烟温,达到或超过最高温度时,报E5故障并进入故障锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "火焰检测故障",
+ "solution": [
+ "系统开始点火燃烧前,检测到有火焰信号,或关闭截止阀后,检测到有火焰信号,诊断为伪火或残火故障,进入锁定状态,可通过开关键解除锁定。"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "水压故障",
+ "solution": [
+ "关闭壁挂炉并关闭壁挂炉电源,逆时针旋转补水阀旋钮补水,观察显示屏上的压力显示值,当水压显示值在0.1~0.15MPa之间时,顺时针旋紧补水阀,然后接通电源,启动壁挂炉。"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "供暖温度传感器故障",
+ "solution": [
+ "壁挂炉供暧温度传感器断线或不正常,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "EEPROM故障",
+ "solution": [
+ "在系统数据改变或存储的数据发生错误时,显示此故障,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "EF",
+ "phenomenon": "冷凝水堵塞故障",
+ "solution": [
+ "关闭壁挂炉电源,检査冷凝水排水管是否堵塞,此故障需与专业人员联系方可解决。"
+ ]
+ },
+ {
+ "errorCode": "",
+ "phenomenon": "显示屏没有接收到主电路板的信号",
+ "solution": [
+ "按动开关键,若不能解除,切断壁挂炉电源后,再重新接通电源,若尝试几次均无效时,请与专业人员联系。"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/assets/waterheater_fault_desc.json b/app/src/main/assets/waterheater_fault_desc.json
new file mode 100644
index 0000000..f476052
--- /dev/null
+++ b/app/src/main/assets/waterheater_fault_desc.json
@@ -0,0 +1,108 @@
+[
+ {
+ "errorCode": "E0",
+ "phenomenon": "残⽕",
+ "solution": [
+ "1、请关闭燃⽓阀⻔并切断热⽔器电源",
+ "2、请联系本公司售后,待售后⼈员排除热⽔器故障后⽅可恢复使⽤"
+ ]
+ },
+ {
+ "errorCode": "E1",
+ "phenomenon": "点⽕失败意外熄⽕",
+ "solution": [
+ "1、检查燃⽓开关是否打开,燃⽓管道或燃⽓罐是否有⽓",
+ "2、关⽔,重新启动",
+ "3、液化⽯油⽓⽓压⾼(减压阀坏)"
+ ]
+ },
+ {
+ "errorCode": "E2",
+ "phenomenon": "电机故障或者烟道堵塞",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E3",
+ "phenomenon": "过热保护或者温控器或电磁阀开路",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E4",
+ "phenomenon": "感温器短路或开路",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E5",
+ "phenomenon": "⽔温超过85℃",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E6",
+ "phenomenon": "伪⽕",
+ "solution": [
+ "1、关⽔,重新启动"
+ ]
+ },
+ {
+ "errorCode": "E7",
+ "phenomenon": "⽔泵堵转",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E8",
+ "phenomenon": "风压异常",
+ "solution": [
+ "1、关⽔、重新启动",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "E9",
+ "phenomenon": "冷凝⽔排放通道堵塞",
+ "solution": [
+ "1、检查冷凝⽔排⽔管是否堵塞",
+ "2、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "En",
+ "phenomenon": "定时时间到",
+ "solution": [
+ "1、关⽔,关机,重新启动热⽔器"
+ ]
+ },
+ {
+ "errorCode": "F3",
+ "phenomenon": "进⽔温度传感器故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F5",
+ "phenomenon": "防冻探头故障",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ },
+ {
+ "errorCode": "F6",
+ "phenomenon": "CO或者CH4报警",
+ "solution": [
+ "1、请联系本公司售后"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
new file mode 100644
index 0000000..c87706a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel
+
+class FaultDescAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.errorCodeView.text = rowsModel.errorCode
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val errorCodeView: TextView = itemView.findViewById(R.id.errorCodeView)
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
new file mode 100644
index 0000000..2da7ff4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/FaultDescAdapter2.kt
@@ -0,0 +1,38 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+import com.casic.br.model.SolutionModel2
+
+class FaultDescAdapter2(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_fault_desc_rv_l_2, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.phenomenonView.text = rowsModel.phenomenon
+ holder.reasonRecyclerView.adapter = SolutionAdapter(context, rowsModel.reason)
+ holder.solutionRecyclerView.adapter = SolutionAdapter(context, rowsModel.solution)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val phenomenonView: TextView = itemView.findViewById(R.id.phenomenonView)
+ val reasonRecyclerView: RecyclerView = itemView.findViewById(R.id.reasonRecyclerView)
+ val solutionRecyclerView: RecyclerView = itemView.findViewById(R.id.solutionRecyclerView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
new file mode 100644
index 0000000..1a9453f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/SolutionAdapter.kt
@@ -0,0 +1,32 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.br.R
+
+class SolutionAdapter(
+ val context: Context, private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_solution_rv_l, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ holder.solutionView.text = dataRows[position]
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val solutionView: TextView = itemView.findViewById(R.id.solutionView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel.java b/app/src/main/java/com/casic/br/model/SolutionModel.java
new file mode 100644
index 0000000..3b4abe4
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel {
+
+ private String errorCode;
+ private String phenomenon;
+ private List solution;
+
+ public String getErrorCode() {
+ return errorCode;
+ }
+
+ public void setErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/model/SolutionModel2.java b/app/src/main/java/com/casic/br/model/SolutionModel2.java
new file mode 100644
index 0000000..2721836
--- /dev/null
+++ b/app/src/main/java/com/casic/br/model/SolutionModel2.java
@@ -0,0 +1,37 @@
+package com.casic.br.model;
+
+import java.util.List;
+
+/**
+ * 故障说明
+ */
+public class SolutionModel2 {
+
+ private String phenomenon;
+ private List reason;
+ private List solution;
+
+ public String getPhenomenon() {
+ return phenomenon;
+ }
+
+ public void setPhenomenon(String phenomenon) {
+ this.phenomenon = phenomenon;
+ }
+
+ public List getReason() {
+ return reason;
+ }
+
+ public void setReason(List reason) {
+ this.reason = reason;
+ }
+
+ public List getSolution() {
+ return solution;
+ }
+
+ public void setSolution(List solution) {
+ this.solution = solution;
+ }
+}
diff --git a/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt b/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt
new file mode 100644
index 0000000..6cc61d3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/FaultDescriptionActivity.kt
@@ -0,0 +1,66 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.casic.br.adapter.FaultDescAdapter
+import com.casic.br.adapter.FaultDescAdapter2
+import com.casic.br.model.SolutionModel
+import com.casic.br.model.SolutionModel2
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.readAssetsFile
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.activity_fault_description.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class FaultDescriptionActivity : KotlinBaseActivity() {
+
+ private val gson by lazy { Gson() }
+
+ override fun initLayoutView(): Int = R.layout.activity_fault_description
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "故障说明"
+ }
+
+ override fun initData() {
+ when (intent.getStringExtra(Constant.INTENT_PARAM)!!) {
+ "燃气灶" -> {
+ val assetsContent = readAssetsFile("cooker_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter2(this, descModels)
+ }
+ "壁挂炉" -> {
+ val assetsContent = readAssetsFile("fireplace_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter(this, descModels)
+ }
+ "热水器" -> {
+ val assetsContent = readAssetsFile("waterheater_fault_desc.json")
+ val descModels = gson.fromJson>(
+ assetsContent, object : TypeToken>() {}.type
+ )
+ faultDescriptionView.adapter = FaultDescAdapter(this, descModels)
+ }
+ }
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
index ed0670c..f39819c 100644
--- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
@@ -16,9 +16,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -102,7 +104,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -146,6 +148,7 @@
finish()
}
})
+ 2 -> navigatePageTo("燃气灶")
}
}
})
diff --git a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
index fd54cb1..458b841 100644
--- a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
@@ -17,9 +17,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -103,7 +105,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -147,6 +149,7 @@
finish()
}
})
+ 2 -> navigatePageTo("壁挂炉")
}
}
})
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 22685d9..299155a 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -18,9 +18,11 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.utils.TuyaDeviceListener
import com.casic.br.utils.WebImageViewHelper
+import com.casic.br.view.FaultDescriptionActivity
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
@@ -111,7 +113,7 @@
rightOperateView.setOnClickListener {
BottomActionSheet.Builder()
.setContext(this)
- .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备", "故障说明"))
.setItemTextColor(Color.BLUE)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
@@ -155,6 +157,7 @@
finish()
}
})
+ 2 -> navigatePageTo("热水器")
}
}
})
diff --git a/app/src/main/res/layout/activity_fault_description.xml b/app/src/main/res/layout/activity_fault_description.xml
new file mode 100644
index 0000000..d9f76fe
--- /dev/null
+++ b/app/src/main/res/layout/activity_fault_description.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_fault_desc_rv_l.xml b/app/src/main/res/layout/item_fault_desc_rv_l.xml
new file mode 100644
index 0000000..01bdb94
--- /dev/null
+++ b/app/src/main/res/layout/item_fault_desc_rv_l.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_fault_desc_rv_l_2.xml b/app/src/main/res/layout/item_fault_desc_rv_l_2.xml
new file mode 100644
index 0000000..16defee
--- /dev/null
+++ b/app/src/main/res/layout/item_fault_desc_rv_l_2.xml
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_solution_rv_l.xml b/app/src/main/res/layout/item_solution_rv_l.xml
new file mode 100644
index 0000000..8ffb9da
--- /dev/null
+++ b/app/src/main/res/layout/item_solution_rv_l.xml
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file