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