欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net

一、项目概述

运行效果图

image-20260408231905025

image-20260408231917829

image-20260408231923156

image-20260408231927191

image-20260408231931381

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)
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)
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)
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)
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 声音识别模拟实现

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 故障诊断实现

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 症状选择实现

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 维修步骤展示

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 开发注意事项

  1. 安全提示:所有维修教程必须包含安全警告,提醒用户断电操作

  2. 声音识别:Web版本无法使用真实麦克风,需模拟实现

  3. 数据准确性:故障诊断数据需经过专业人员审核

  4. 免责声明:应用需明确声明仅供参考,复杂故障建议专业人员

  5. 性能优化:大量教程数据时需优化加载性能

8.2 常见问题

问题 原因 解决方案
声音识别无结果 模拟数据随机 增加匹配逻辑
教程加载慢 数据量大 实现懒加载
步骤显示异常 数据格式错误 检查数据结构
动画卡顿 控制器未释放 正确管理生命周期
匹配度异常 算法逻辑错误 检查置信度计算

8.3 安全提示

⚠️ 重要安全提示 ⚠️

维修前务必注意

  • 断开电源再操作
  • 准备好所需工具
  • 仔细阅读教程步骤
  • 复杂故障请专业人员

用电安全原则

  • 湿手不触碰电器
  • 使用绝缘工具
  • 注意高压部件
  • 儿童远离维修现场

九、运行说明

9.1 环境要求

环境 版本要求
Flutter SDK >= 3.0.0
Dart SDK >= 2.17.0
鸿蒙OS API 21+
Web浏览器 Chrome 90+

9.2 运行命令

# 查看可用设备
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 设计规范,以清新的青绿色为主色调,象征智能家居的科技与环保。通过本应用,希望能够帮助用户节省维修费用,提高生活便利性,让家电维修变得简单易行。

智能家电故障诊断——让维修变得简单


Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐