欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net
一、项目概述
运行效果图





1.1 应用简介
智能家电故障诊断是一款面向普通家庭的智能家居维修助手应用。通过声音识别技术自动诊断家电故障,提供详细的图文视频维修教程,让普通人也能轻松自己修家电,节省维修费用,提高生活便利性。
应用以清新的青绿色为主色调,象征智能家居的科技与环保。涵盖故障诊断、维修教程、诊断历史、关于信息四大模块。用户可以选择家电类型、录制故障声音、选择故障症状,系统自动匹配故障原因并提供维修方案。
1.2 核心功能
| 功能模块 | 功能描述 | 实现方式 |
|---|---|---|
| 声音识别 | 通过声音识别故障类型 | 模拟音频分析 |
| 故障诊断 | 智能匹配故障原因 | 数据库匹配 |
| 维修教程 | 图文视频维修指南 | 步骤化展示 |
| 难度评估 | 四级维修难度评估 | 枚举定义 |
| 成本预估 | 预估维修时间和费用 | 数据计算 |
| 历史记录 | 保存诊断维修记录 | 本地存储 |
1.3 家电类型定义
| 序号 | 家电名称 | Emoji | 颜色 | 描述 |
|---|---|---|---|---|
| 1 | 冰箱 | 🧊 | #4FC3F7 | 制冷家电 |
| 2 | 洗衣机 | 🧺 | #4DD0E1 | 清洁家电 |
| 3 | 空调 | ❄️ | #81D4FA | 温控家电 |
| 4 | 微波炉 | 📦 | #FFB74D | 加热家电 |
| 5 | 电视 | 📺 | #90A4AE | 影音家电 |
| 6 | 热水器 | 🚿 | #FF8A65 | 水暖家电 |
| 7 | 电饭煲 | 🍚 | #A5D6A7 | 厨房家电 |
| 8 | 吸尘器 | 🤖 | #CE93D8 | 清洁家电 |
1.4 维修难度定义
| 序号 | 难度等级 | Emoji | 颜色 | 描述 |
|---|---|---|---|---|
| 1 | 简单 | 🟢 | #4CAF50 | 可自行处理 |
| 2 | 中等 | 🟡 | #FFC107 | 需一定技能 |
| 3 | 困难 | 🟠 | #FF9800 | 建议专业人员 |
| 4 | 专业 | 🔴 | #F44336 | 必须专业人员 |
1.5 声音类型定义
| 序号 | 声音类型 | Emoji | 描述 |
|---|---|---|---|
| 1 | 嗡嗡声 | 🔊 | 持续低频振动声 |
| 2 | 咔嗒声 | 🔘 | 间歇性金属撞击声 |
| 3 | 吱吱声 | 🐭 | 尖锐摩擦声 |
| 4 | 哗啦声 | 🔔 | 零件松动碰撞声 |
| 5 | 嗡鸣声 | 💭 | 电机运转异响 |
| 6 | 摩擦声 | ⚙️ | 金属摩擦尖锐声 |
| 7 | 滴滴声 | 📢 | 电子报警提示音 |
| 8 | 无声 | 🔇 | 设备无响应 |
1.6 技术栈
| 技术领域 | 技术选型 | 版本要求 |
|---|---|---|
| 开发框架 | Flutter | >= 3.0.0 |
| 编程语言 | Dart | >= 2.17.0 |
| 设计规范 | Material Design 3 | - |
| 动画控制 | AnimationController | - |
| 数据存储 | 内存存储 | - |
| 目标平台 | 鸿蒙OS / Web | API 21+ |
1.7 项目结构
lib/
└── main_smart_appliance_diagnosis.dart
├── SmartApplianceDiagnosisApp # 应用入口
├── ApplianceType # 家电类型枚举
├── FaultLevel # 维修难度枚举
├── SoundType # 声音类型枚举
├── FaultSymptom # 故障症状模型
├── FaultDiagnosis # 故障诊断模型
├── RepairStep # 维修步骤模型
├── DiagnosisRecord # 诊断记录模型
├── SmartApplianceDiagnosisHomePage # 主页面(底部导航)
├── _buildDiagnosisPage # 诊断页面
├── _buildTutorialPage # 教程页面
├── _buildHistoryPage # 历史页面
└── _buildProfilePage # 关于页面
二、系统架构
2.1 整体架构图
Data Layer
Business Layer
Presentation Layer
主页面
SmartApplianceDiagnosisHomePage
诊断页
教程页
历史页
关于页
家电选择
声音识别
症状选择
诊断结果
教程列表
步骤详情
工具提示
历史列表
记录详情
功能特色
安全提示
声音识别引擎
SoundRecognizer
故障诊断器
FaultDiagnoser
教程管理器
TutorialManager
FaultDiagnosis
故障诊断数据
RepairStep
维修步骤数据
DiagnosisRecord
诊断记录
ApplianceType
家电类型
FaultLevel
维修难度
2.2 类图设计
has
has
contains
references
references
SmartApplianceDiagnosisApp
+Widget build()
<<enumeration>>
ApplianceType
+String label
+String emoji
+Color color
+refrigerator()
+washing()
+airConditioner()
+microwave()
+tv()
+waterHeater()
+riceCooker()
+vacuum()
<<enumeration>>
FaultLevel
+String label
+String emoji
+Color color
+String description
+easy()
+medium()
+hard()
+professional()
<<enumeration>>
SoundType
+String label
+String emoji
+String description
+buzzing()
+clicking()
+squeaking()
+rattling()
+humming()
+grinding()
+beeping()
+silence()
FaultSymptom
+String id
+String description
+List<String> keywords
FaultDiagnosis
+String id
+ApplianceType applianceType
+String faultName
+FaultLevel level
+String description
+List<String> possibleCauses
+List<String> symptoms
+List<RepairStep> repairSteps
+List<String> requiredTools
+int estimatedTime
+int estimatedCost
+double confidence
RepairStep
+int step
+String title
+String description
+String? imageUrl
+String? videoTimestamp
+List<String> tips
+List<String> warnings
DiagnosisRecord
+String id
+ApplianceType applianceType
+String faultName
+FaultLevel level
+DateTime diagnosisTime
+double confidence
+bool isRepaired
2.3 页面导航流程
诊断
教程
历史
关于
应用启动
诊断页
底部导航
选择家电
教程列表
历史记录
应用信息
声音识别
录制故障声音
分析声音类型
选择症状
多选故障表现
开始诊断
显示结果
查看维修教程
按步骤操作
2.4 故障诊断流程
数据库 诊断引擎 声音识别 诊断页 用户 数据库 诊断引擎 声音识别 诊断页 用户 选择家电类型 更新选中状态 点击声音识别 开始录音 分析音频特征 返回声音类型 选择故障症状 更新症状列表 开始诊断 提交诊断请求 查询匹配故障 返回故障列表 返回诊断结果 显示故障卡片
三、核心模块设计
3.1 数据模型设计
3.1.1 家电类型枚举 (ApplianceType)
dart
enum ApplianceType {
refrigerator(label: '冰箱', emoji: '🧊', color: Color(0xFF4FC3F7)),
washing(label: '洗衣机', emoji: '🧺', color: Color(0xFF4DD0E1)),
airConditioner(label: '空调', emoji: '❄️', color: Color(0xFF81D4FA)),
microwave(label: '微波炉', emoji: '📦', color: Color(0xFFFFB74D)),
tv(label: '电视', emoji: '📺', color: Color(0xFF90A4AE)),
waterHeater(label: '热水器', emoji: '🚿', color: Color(0xFFFF8A65)),
riceCooker(label: '电饭煲', emoji: '🍚', color: Color(0xFFA5D6A7)),
vacuum(label: '吸尘器', emoji: '🤖', color: Color(0xFFCE93D8));
final String label;
final String emoji;
final Color color;
}
3.1.2 维修难度枚举 (FaultLevel)
dart
enum FaultLevel {
easy(label: '简单', emoji: '🟢', color: Color(0xFF4CAF50), description: '可自行处理'),
medium(label: '中等', emoji: '🟡', color: Color(0xFFFFC107), description: '需一定技能'),
hard(label: '困难', emoji: '🟠', color: Color(0xFFFF9800), description: '建议专业人员'),
professional(label: '专业', emoji: '🔴', color: Color(0xFFF44336), description: '必须专业人员');
final String label;
final String emoji;
final Color color;
final String description;
}
3.1.3 故障诊断模型 (FaultDiagnosis)
dart
class FaultDiagnosis {
final String id; // 故障ID
final ApplianceType applianceType; // 家电类型
final String faultName; // 故障名称
final FaultLevel level; // 维修难度
final String description; // 故障描述
final List<String> possibleCauses; // 可能原因
final List<String> symptoms; // 故障症状
final List<RepairStep> repairSteps; // 维修步骤
final List<String> requiredTools; // 所需工具
final int estimatedTime; // 预计时间(分钟)
final int estimatedCost; // 预计费用(元)
final double confidence; // 匹配置信度
}
3.1.4 维修步骤模型 (RepairStep)
dart
class RepairStep {
final int step; // 步骤序号
final String title; // 步骤标题
final String description; // 步骤描述
final String? imageUrl; // 图片URL
final String? videoTimestamp; // 视频时间戳
final List<String> tips; // 操作提示
final List<String> warnings; // 安全警告
}
3.1.5 家电类型分布
13% 13% 13% 13% 13% 13% 13% 13% 支持家电类型分布 冰箱 洗衣机 空调 微波炉 电视 热水器 电饭煲 吸尘器
3.2 页面结构设计
3.2.1 主页面布局
SmartApplianceDiagnosisHomePage
IndexedStack
诊断页
教程页
历史页
关于页
NavigationBar
诊断 Tab
教程 Tab
历史 Tab
关于 Tab
3.2.2 诊断页结构
诊断页
SliverAppBar
快速统计
家电选择
声音识别
症状选择
诊断结果
标题
统计数据
家电类型数
故障方案数
已修复数
家电类型芯片
录音按钮
声音波形
识别结果
症状芯片列表
诊断卡片
故障信息
维修建议
3.2.3 声音识别区域
声音识别区
录音按钮
波形动画
识别结果
麦克风图标
点击开始/停止
脉冲动画
音量指示
声音类型标签
声音描述
3.2.4 教程页结构
教程页
SliverAppBar
教程列表
教程卡片
家电图标
故障名称
难度标签
展开详情
维修步骤
工具列表
时间费用
步骤项
步骤序号
步骤标题
步骤描述
提示警告
3.3 声音识别逻辑
是
否
点击录音
开始录音
显示波形动画
更新音量指示
3秒后
停止录音
分析音频特征
匹配声音类型
返回识别结果
显示识别结果
更新诊断参数
3.4 故障匹配逻辑
无家电
有家电
是
否
开始诊断
获取选择参数
参数完整性
提示选择家电
遍历故障库
匹配家电类型
有声音类型?
匹配声音症状
返回该类型所有故障
计算匹配置信度
排序返回结果
显示诊断结果
四、UI设计规范
4.1 配色方案
应用以清新的青绿色为主色调,象征智能家居的科技与环保:
| 颜色类型 | 色值 | 用途 |
|---|---|---|
| 主色 | #00897B (Teal) | 导航、主题元素 |
| 辅助色 | #26A69A | 教程页面 |
| 第三色 | #4DB6AC | 历史页面 |
| 强调色 | #80CBC4 | 关于页面 |
| 背景色 | #FAFAFA | 页面背景 |
| 卡片背景 | #FFFFFF | 诊断卡片 |
4.2 难度等级颜色
| 难度等级 | 色值 | 视觉效果 |
|---|---|---|
| 简单 | #4CAF50 | 安全绿色 |
| 中等 | #FFC107 | 注意黄色 |
| 困难 | #FF9800 | 警告橙色 |
| 专业 | #F44336 | 危险红色 |
4.3 字体规范
| 元素 | 字号 | 字重 | 颜色 |
|---|---|---|---|
| 页面标题 | 24px | Bold | 主色 |
| 故障名称 | 16px | Bold | #000000 |
| 步骤标题 | 14px | Bold | #000000 |
| 步骤描述 | 13px | Regular | 灰色 |
| 难度标签 | 12px | Bold | 等级颜色 |
| 统计数字 | 20px | Bold | 白色 |
4.4 组件规范
4.4.1 家电选择芯片
┌─────────────────────────────────────┐
│ [🧊 冰箱] [🧺 洗衣机] [❄️ 空调] │
│ [📦 微波炉] [📺 电视] [🚿 热水器] │
│ [🍚 电饭煲] [🤖 吸尘器] │
└─────────────────────────────────────┘
4.4.2 声音识别按钮
┌─────────────────────────────────────┐
│ │
│ ╭─────────╮ │
│ │ 🎤 │ │
│ │ │ │
│ ╰─────────╯ │
│ │
│ 🔊 嗡嗡声 │
│ │
└─────────────────────────────────────┘
4.4.3 诊断结果卡片
┌─────────────────────────────────────────────────────┐
│ 🧊 压缩机异响 [🟡 中等] │
│ 冰箱压缩机发出异常嗡嗡声或振动声 │
├─────────────────────────────────────────────────────┤
│ [⏱️ 30分钟] [💰 ¥50] [📊 85%] │
│ │
│ 可能原因: │
│ [压缩机老化] [制冷剂不足] [启动继电器故障] │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ ▶ 查看维修教程 │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
4.4.4 维修步骤展示
┌─────────────────────────────────────────────────────┐
│ ① 检查电源电压 │
│ 使用万用表测量插座电压,正常范围198V-242V │
│ 💡 断电后测量 💡 注意安全 │
│ ⚠️ 避免触电 │
│ │
│ ② 清洁压缩机区域 │
│ 清理压缩机周围的灰尘和杂物,确保散热良好 │
│ 💡 使用软毛刷 💡 断电操作 │
│ │
│ ③ 检查启动继电器 │
│ 拆下启动继电器,检查是否粘连或损坏 │
│ 💡 拍照记录接线位置 │
│ ⚠️ 断电后操作 │
└─────────────────────────────────────────────────────┘
五、核心功能实现
5.1 声音识别模拟实现
dart
void _startSoundDiagnosis() {
setState(() {
_isListening = true;
_soundLevel = 0.0;
});
_soundWaveController.repeat();
Timer.periodic(const Duration(milliseconds: 100), (timer) {
if (!_isListening) {
timer.cancel();
_soundWaveController.stop();
return;
}
setState(() {
_soundLevel = 0.3 + _random.nextDouble() * 0.7;
});
});
Future.delayed(const Duration(seconds: 3), () {
if (_isListening) {
_stopSoundDiagnosis();
}
});
}
5.2 故障诊断实现
dart
void _runDiagnosis() {
if (_selectedAppliance == null) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('请先选择家电类型'),
backgroundColor: Colors.orange,
),
);
return;
}
setState(() {
_isDiagnosing = true;
});
Future.delayed(const Duration(seconds: 2), () {
final results = _faultDatabase.where((fault) {
bool match = fault.applianceType == _selectedAppliance;
if (_selectedSound != null) {
match = match && fault.symptoms.any((s) => s.contains(_selectedSound!.label));
}
return match;
}).toList();
if (results.isEmpty && _selectedAppliance != null) {
results.addAll(_faultDatabase.where((f) => f.applianceType == _selectedAppliance));
}
setState(() {
_diagnosisResults = results;
_isDiagnosing = false;
});
});
}
5.3 症状选择实现
dart
void _toggleSymptom(FaultSymptom symptom) {
setState(() {
if (_selectedSymptoms.any((s) => s.id == symptom.id)) {
_selectedSymptoms.removeWhere((s) => s.id == symptom.id);
} else {
_selectedSymptoms.add(symptom);
}
});
}
5.4 维修步骤展示
dart
Widget _buildStepItem(RepairStep step) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: 28,
height: 28,
decoration: BoxDecoration(
color: const Color(0xFF00897B),
shape: BoxShape.circle,
),
child: Center(
child: Text(
'${step.step}',
style: const TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 12,
),
),
),
),
const SizedBox(width: 12),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(step.title, style: const TextStyle(fontWeight: FontWeight.bold)),
const SizedBox(height: 4),
Text(step.description, style: TextStyle(color: Colors.grey[600], fontSize: 13)),
if (step.tips.isNotEmpty) ...[
const SizedBox(height: 6),
Wrap(
spacing: 8,
children: step.tips.map((tip) {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 2),
decoration: BoxDecoration(
color: Colors.blue.withValues(alpha: 0.1),
borderRadius: BorderRadius.circular(8),
),
child: Text('💡 $tip', style: const TextStyle(fontSize: 11, color: Colors.blue)),
);
}).toList(),
),
],
],
),
),
],
),
);
}
六、交互设计
6.1 声音识别流程
识别引擎 动画控制器 录音按钮 用户 识别引擎 动画控制器 录音按钮 用户 点击开始 启动波形动画 显示动态效果 开始录音分析 实时更新音量 点击停止或3秒后 停止动画 分析音频特征 返回声音类型
6.2 故障诊断流程
声音识别
症状选择
选择家电
选择诊断方式
录制故障声音
勾选故障表现
分析声音类型
匹配故障库
计算匹配置信度
排序结果
显示诊断卡片
用户选择
查看维修教程
按步骤操作
6.3 维修教程浏览
点击故障
展开卡片
收起卡片
教程列表
展开详情
查看步骤
收起详情
七、扩展功能规划
7.1 后续版本规划
2024-01-07 2024-01-14 2024-01-21 2024-01-28 2024-02-04 2024-02-11 2024-02-18 2024-02-25 2024-03-03 2024-03-10 2024-03-17 2024-03-24 故障数据库 声音识别模拟 维修教程系统 真实音频识别 视频教程集成 AR辅助维修 配件商城对接 预约维修服务 社区问答功能 V1.0 基础版本 V1.1 增强版本 V1.2 进阶版本 智能家电故障诊断应用开发计划
7.2 功能扩展建议
7.2.1 真实音频识别
识别功能:
- 集成音频录制API
- 使用机器学习模型
- 支持多种故障声音
- 实时分析反馈
7.2.2 视频教程集成
视频功能:
- 嵌入维修视频
- 时间戳跳转
- 离线缓存
- 多语言字幕
7.2.3 AR辅助维修
AR功能:
- 零件识别标注
- 操作步骤叠加
- 虚拟工具指引
- 实时错误提示
八、注意事项
8.1 开发注意事项
-
安全提示:所有维修教程必须包含安全警告,提醒用户断电操作
-
声音识别:Web版本无法使用真实麦克风,需模拟实现
-
数据准确性:故障诊断数据需经过专业人员审核
-
免责声明:应用需明确声明仅供参考,复杂故障建议专业人员
-
性能优化:大量教程数据时需优化加载性能
8.2 常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 声音识别无结果 | 模拟数据随机 | 增加匹配逻辑 |
| 教程加载慢 | 数据量大 | 实现懒加载 |
| 步骤显示异常 | 数据格式错误 | 检查数据结构 |
| 动画卡顿 | 控制器未释放 | 正确管理生命周期 |
| 匹配度异常 | 算法逻辑错误 | 检查置信度计算 |
8.3 安全提示
⚠️ 重要安全提示 ⚠️
维修前务必注意
- 断开电源再操作
- 准备好所需工具
- 仔细阅读教程步骤
- 复杂故障请专业人员
用电安全原则
- 湿手不触碰电器
- 使用绝缘工具
- 注意高压部件
- 儿童远离维修现场
九、运行说明
9.1 环境要求
| 环境 | 版本要求 |
|---|---|
| Flutter SDK | >= 3.0.0 |
| Dart SDK | >= 2.17.0 |
| 鸿蒙OS | API 21+ |
| Web浏览器 | Chrome 90+ |
9.2 运行命令
bash
# 查看可用设备
flutter devices
# 运行到Web服务器
flutter run -d web-server -t lib/main_smart_appliance_diagnosis.dart --web-port 8135
# 运行到鸿蒙设备
flutter run -d 127.0.0.1:5555 lib/main_smart_appliance_diagnosis.dart
# 代码分析
flutter analyze lib/main_smart_appliance_diagnosis.dart
十、总结
智能家电故障诊断应用通过故障诊断、维修教程、诊断历史、关于信息四大模块,为普通家庭提供了一个便捷的家电维修助手平台。应用支持声音识别故障诊断,提供详细的图文维修教程,让普通人也能轻松自己修家电。
核心功能涵盖家电选择、声音识别、症状选择、故障诊断四大模块。支持8种常见家电类型,包含8个典型故障案例;声音识别模拟实现故障声音分析;维修教程提供详细的步骤指导、工具清单、时间费用预估;四级难度评估帮助用户判断是否可以自行维修。
应用采用 Material Design 3 设计规范,以清新的青绿色为主色调,象征智能家居的科技与环保。通过本应用,希望能够帮助用户节省维修费用,提高生活便利性,让家电维修变得简单易行。
智能家电故障诊断------让维修变得简单