Django + Vue 3 + ECharts + AI:我实现了一个家庭能耗分析与预测平台 - 一个集能耗分析、短期预测、预算追踪和 AI 顾问于一体的全栈项目
从“看电费单”到“让 AI 帮你管家”:我做了一个家庭能耗分析与预测平台
我做了一个面向智能家居场景的家庭能耗分析与预测平台。这个系统不仅能管理家庭设备、查看历史用电记录、进行多维度趋势分析,还能实现未来 1 天和未来 1 周的短期预测,并结合预算进度、预警事件和设备结构生成节能建议。我还进一步为它加入了 AI 能效顾问能力,支持在前端直接配置 DeepSeek 等模型,让系统从“能看数据”升级为“能理解数据、解释数据并辅助决策”。
项目链接:https://download.csdn.net/download/keshi_curry/92787492
✨ 先看亮点:这个项目到底做到了什么?
如果你不想一开始就看长文,可以先看这一段:
- 📊 它能按小时、日、周、月分析家庭能耗趋势
- 🔍 它能告诉你哪台设备是主要耗电来源
- 🚨 它支持阈值预警,能自动发现异常耗电
- 📈 它支持未来 1 天和未来 1 周短期预测
- 💰 它能跟踪月度预算,判断会不会超支
- 🤖 它内置了 AI 能效顾问,能结合真实数据给出建议
- ⚙️ 它支持前端直接切换模型服务,不用改代码
- 🧑💻 它是一个完整的全栈项目,前后端、算法、文档都齐全
如果只用一句话概括:
这不是一个“把电量画成图表”的页面集合,而是一个真正面向家庭用电管理的智能平台原型。
一、🧭 为什么我要做这样一个项目
在很多家庭里,“用电管理”这件事其实非常粗糙。
我们能看到的,往往只有月底那一张电费账单;我们不知道家里哪台设备最耗电,也很难判断某一段时间电量突然升高,到底是天气原因、设备老化,还是某种异常使用行为。
更现实的问题是,传统家庭用电认知方式存在几个明显短板:
- 只能看到总量,看不到结构
- 只能事后复盘,不能提前预测
- 只能凭经验判断,缺少数据支撑
- 只能发现“贵了”,很难知道“为什么贵了”
- 只能被动接受账单,无法主动管理预算
这类问题看似生活化,其实非常适合做成数据系统。因为只要把设备、时间、记录、趋势、预测、预算这些维度组织起来,用电管理就会从“模糊感觉”变成“可量化判断”。
所以我想做的不只是一个“电量展示页面”,而是一个真正面向家庭场景的家庭能耗分析与预测平台。
这个平台的目标很明确:
- 帮用户看清楚家庭能耗结构
- 帮用户预测未来短期用电趋势
- 帮用户及时发现异常和风险
- 帮用户控制预算
- 进一步通过 AI 给出更像“家庭能源顾问”的综合建议
换句话说,我想做的不是一个“显示数据”的系统,而是一个帮助家庭理解用电、预测用电、优化用电的智能平台。
二、🔎 这个项目到底是什么
2.1 一句话定义
如果要用一句话定义这个项目,我会这样说:
这不是一个简单的电量看板,而是一个面向智能家居场景的家庭能耗数据平台,它把“记录、分析、预测、预警、预算管理、AI 解读”整合到了一套完整系统里。
它覆盖了从用户登录、设备管理、记录查询,到短期预测、预警提醒、预算追踪,再到 AI 智能分析的完整闭环。
2.2 它和普通“智能家居面板”有什么不同
很多系统只能做到“设备在线状态 + 实时数据展示”,但这个项目更强调数据理解能力和决策支持能力。
| 维度 | 普通设备看板 | 这个项目的能力 |
|---|---|---|
| 数据展示 | 只能看当前值 | 可以看历史趋势、结构占比和原始样本 |
| 预测能力 | 通常没有 | 支持未来 1 天 / 1 周短期预测 |
| 异常发现 | 靠用户自己观察 | 支持阈值预警与未读预警处理 |
| 成本管理 | 没有预算概念 | 支持月度预算追踪和风险提示 |
| 智能解读 | 没有分析层 | 支持 AI 能效顾问生成综合建议 |
| 使用对象 | 更偏设备控制 | 更偏家庭能耗管理与决策支持 |
如果说普通智能家居平台更像“设备控制中心”,那么这个项目更像:
家庭用电的数据中台 + 能耗分析助手 + AI 顾问。
2.3 它解决的,其实是三个层次的问题
这个项目不是只解决“看见数据”这一个问题,而是分三层往上走:
- 先看见
用户先知道现在用了多少电、哪台设备更耗电、最近趋势如何。 - 再理解
用户进一步知道为什么会这样,是某类设备、某个时间段还是某个异常行为导致的。 - 最后做决策
系统通过预测、预警、预算和 AI 建议,帮助用户判断“接下来该怎么做”。
真正有价值的产品,往往不是把图做得更漂亮,而是能把这三层串起来。
三、🏠 一个更真实的家庭场景:这个系统到底怎么帮人
很多项目介绍都喜欢上来就讲技术栈,但如果不先讲场景,读者很难意识到这个系统为什么有意义。
想象一个很普通的周末家庭:
- 早上,热水器、厨房电器、烧水壶开始集中工作
- 中午,冰箱、空调、油烟机、洗碗机持续运行
- 下午,家里几乎没人,但空调没有关闭,待机设备一直耗电
- 晚上,电视、电脑、照明、洗衣机、热水器又进入一轮高峰
如果只是看月底账单,你只能知道:“这个月电费变高了。”
但这个系统会把它拆开:
- 📌 用电高峰集中在哪几个时段
- 📌 哪几台设备贡献了主要能耗
- 📌 最近一周的趋势是上升还是下降
- 📌 有没有超阈值的异常记录
- 📌 本月预算是不是已经开始危险
- 📌 按照当前趋势,未来 7 天会不会继续抬高成本
更进一步,AI 能效顾问还能把这些原始数据翻译成人更容易理解的话:
“最近 7 天空调和热水器占总能耗的 61%,夜间待机负载异常偏高。如果当前使用模式持续下去,本月支出大概率超过预算上限。建议优先检查空调温控策略、热水器定时设置,并减少深夜非必要持续通电设备。”
这就是我觉得这个项目真正有趣的地方:
它不是替用户“存数据”,而是在尝试替用户“解释数据”。
四、🧩 项目的核心能力
这个项目目前已经形成了比较完整的功能闭环,核心能力可以分成七大部分。
4.1 家庭能耗总览
用户登录系统后,首先看到的是总览页。
这一页不是简单堆几张图,而是把最关键的问题直接摆在用户面前:
- 今天用了多少电
- 最近 7 天和最近 30 天整体能耗怎么样
- 每天大概是什么时候用电高峰
- 哪台设备是当前主要耗能设备
- 最近有没有异常记录或预警事件
- 本月预算已经用了多少,还剩多少
这种设计的核心意义在于:
让用户先建立“全局感”,再进入更细的分析。
4.2 多维度能耗分析
系统支持按不同时间粒度查看能耗数据:
- 按小时
- 按日
- 按周
- 按月
同时,分析页会展示:
- 趋势变化曲线
- 设备能耗占比
- 统计窗口总能耗
- 记录总数
- 日均能耗
- 峰值时段与峰值设备
- 原始记录样本
其中原始记录样本表格采用固定高度滚动设计,不会把页面拉得很长,既保留了数据透明度,又不会破坏页面观感。
4.3 短期预测能力
系统支持两个预测范围:
- 未来 1 天
- 未来 1 周
预测结果不只是给出一个“总数”,而是完整输出:
- 预测总能耗
- 历史基准值
- 预测曲线
- 预测上下界
- 模型评分
- 训练样本数
实现上采用了线性回归模型,同时在数据不足时会自动回退到移动平均预测,保证系统在不同数据条件下都能给出合理结果。
4.4 预警规则与异常提醒
系统支持用户自己配置预警规则,例如:
- 小时能耗阈值
- 当日累计能耗阈值
- 实时功率阈值
一旦新记录触发超阈值逻辑,系统就会自动生成预警事件,并在设备与预警页面中显示未读预警。
这意味着用户不需要一直盯着图表看,也能在关键时刻被系统主动提醒。
4.5 月度预算追踪
这个能力是我认为非常实用、也很适合家庭场景的一部分。
很多系统只告诉你“用了多少电”,但真正让用户有感知的,通常是“这个月电费会不会超预算”。
所以项目里新增了预算追踪能力,会展示:
- 本月累计支出
- 本月已使用电量
- 预算剩余金额
- 预算使用率
- 月末预计支出
- 当前预算状态
这样用户不只是看数据,还能直接判断“当前是否危险”。
4.6 AI 能效顾问
这是整个项目里我最想强调的一部分,也是区别于传统课程项目或普通可视化系统的地方。
我为系统新增了一个独立的 AI 能效顾问页面。
这个页面不是把 AI 硬塞进去,而是让 AI 真正和业务数据结合起来。它会综合以下信息:
- 当前家庭能耗概况
- 设备能耗占比
- 未来 1 天 / 1 周预测结果
- 预算进度
- 未读预警情况
然后生成一份更接近“顾问式”的综合分析报告,包括:
- 总结性判断
- 风险等级
- 关键洞察
- 预测亮点
- 可执行建议
- 重点设备优化动作
更关键的是,这个页面支持用户自己在前端配置:
- 模型名称
- API Key
- Base URL
- 接口路径
- 系统提示词
也就是说,用户如果想接入 DeepSeek 或其他兼容 OpenAI Chat Completions 协议的模型,并不需要改代码,只需要在前端页面填写配置即可。
这让整个系统从“写死的 AI 演示”变成了真正可切换模型的 AI 能源顾问平台。
4.7 管理员视角的报表能力
这个项目并不只是一个“个人首页”,它还支持平台级管理视角。
管理员可以:
- 查看平台总用户数
- 查看平台总设备数
- 统计全平台能耗
- 查看成本总额
- 观察整体趋势
- 查看用户用电排行
这意味着它不是一个松散的页面集合,而是真正具备多角色平台设计的系统。
五、🌈 这个项目真正有意思的地方,不只是功能多
如果只是列功能,这个项目看起来像是“能耗分析 + 预测 + AI”的组合。但我觉得它真正有意思的地方,在于下面这几个点。
5.1 它在尝试把“数据”翻译成“决策”
很多系统停留在“给你看图”。
但这个项目更想做的是:
- 图表告诉你发生了什么
- 预测告诉你接下来可能会发生什么
- 预算告诉你会不会出问题
- 预警告诉你哪里已经有风险
- AI 告诉你现在最值得做什么
这比单纯的“可视化”更接近产品。
5.2 它不是纯算法项目,也不是纯管理系统
这个项目刚好卡在一个很适合展示综合能力的位置:
- 有真实的业务模型
- 有前端交互和图表设计
- 有后端接口与权限逻辑
- 有数据统计与分析
- 有预测算法
- 有 AI 接入
- 有文档体系
所以它特别适合作为:
- 🧑💻 全栈作品集项目
- 🎓 毕业设计 / 答辩项目
- 🚀 面试项目展示
- ✍️ 技术博客素材
5.3 它看起来“像一个真的产品”
这点其实很重要。
很多课程项目的问题不是“做不出来”,而是做出来之后像一个拼接的 Demo。这个项目尽量避免那种感觉,而是把系统做成一种更完整的体验:
- 有登录和用户体系
- 有角色区分
- 有主导航和多个业务页面
- 有配置面板
- 有历史记录
- 有建议输出
- 有管理视角
换句话说,这不是“某个算法页面”,而是一个从进入系统到持续使用都说得通的平台雏形。
六、🧱 系统架构:这个项目是怎么搭起来的
为了让这个系统既能做业务,又能做分析和预测,我采用了前后端分离的结构。
整体架构可以概括为:
┌─────────────────────────────────────────────────────────────┐
│ Vue 3 + Vite + ECharts │
│ Dashboard / Analytics / Forecast / Devices / AI │
└───────────────────────┬─────────────────────────────────────┘
│ Axios 调用 REST API
▼
┌─────────────────────────────────────────────────────────────┐
│ Django + Django REST Framework │
│ Auth / Devices / Alerts / Analytics / Forecast / AI API │
└───────────────┬───────────────────────┬─────────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────────────┐
│ services.py │ │ ai_services.py │
│ 分析/预测/预算 │ │ 模型接入/提示词/兜底分析 │
└─────────────────┘ └─────────────────────────┘
│ │
└───────────┬───────────┘
▼
MySQL / SQLite 数据层
6.1 前端技术栈
前端采用:
- Vue 3
- Vue Router
- Axios
- ECharts
- Vite
前端负责:
- 页面布局与交互
- 图表渲染
- 用户操作流转
- API 调用与状态展示
- AI 配置面板与结果展示
6.2 后端技术栈
后端采用:
- Django
- Django REST Framework
- Pandas
- NumPy
- scikit-learn
- requests
后端负责:
- 用户认证
- 设备与记录管理
- 统计分析
- 短期预测
- 预警规则评估
- 预算状态计算
- AI 接入配置与分析结果生成
6.3 数据层设计
数据存储上优先使用 MySQL,同时保留 SQLite 调试能力。
核心数据表包括:
- 用户档案
- 设备
- 能耗记录
- 预警规则
- 预警事件
- 预测结果
- AI 接入配置
- AI 分析历史
6.4 一次请求是怎么跑完整条链路的
比如用户在前端点击“生成 AI 分析”,背后其实走的是这样一条链路:
- 前端收集当前筛选条件、AI 配置和用户请求
- Axios 调用后端 AI 分析接口
- 后端先读取当前用户的能耗总览、设备占比、预测结果、预算状态、预警状态
- 后端将这些业务数据拼成提示上下文
- 如果配置了模型,就调用外部模型接口
- 如果模型不可用,就退回本地兜底分析
- 最终返回结构化分析结果给前端
- 前端把结果渲染为摘要、风险等级、建议、历史记录
这类“数据采集 -> 服务聚合 -> 模型调用 -> 结果回显”的链路,本身就是一个很适合讲工程实现的点。
七、🗂️ 项目结构图:从目录上看,这个项目长什么样
为了让博客不只是“讲功能”,这里也可以把项目结构放进去,让读者看到它不是一页页面,而是一套完整的工程。
7.1 简化版树形结构图
一种基于边缘计算与自适应采样触发的移动载体地质体智能识别方法及系统/
├── README.md
├── requirements.txt
├── backend/
│ ├── manage.py
│ ├── smart_energy/
│ │ ├── settings.py
│ │ ├── urls.py
│ │ ├── asgi.py
│ │ └── wsgi.py
│ └── energy/
│ ├── models.py
│ ├── serializers.py
│ ├── views.py
│ ├── urls.py
│ ├── services.py
│ ├── ai_services.py
│ ├── tests.py
│ ├── admin.py
│ ├── migrations/
│ └── management/commands/seed_demo.py
├── frontend/
│ ├── package.json
│ ├── vite.config.js
│ ├── index.html
│ └── src/
│ ├── main.js
│ ├── router.js
│ ├── api.js
│ ├── style.css
│ ├── App.vue
│ ├── components/
│ │ ├── SideNav.vue
│ │ ├── MetricCard.vue
│ │ └── EChart.vue
│ └── views/
│ ├── LoginView.vue
│ ├── DashboardView.vue
│ ├── AnalyticsView.vue
│ ├── ForecastView.vue
│ ├── DevicesView.vue
│ ├── AIAdvisorView.vue
│ ├── ProfileView.vue
│ └── AdminView.vue
├── docs/
│ ├── 需求摘要.md
│ ├── 系统设计说明.md
│ ├── 数据库设计.md
│ ├── API接口文档.md
│ └── 项目介绍博客.md
└── scripts/
├── start_backend.sh
└── start_frontend.sh
7.2 关键文件分别负责什么
| 文件 | 作用 |
|---|---|
backend/energy/models.py |
定义用户、设备、记录、规则、AI 配置等核心数据模型 |
backend/energy/views.py |
暴露 REST API,负责请求接入与响应组织 |
backend/energy/services.py |
负责分析、预测、预算和建议等业务服务 |
backend/energy/ai_services.py |
负责 AI 模型调用、提示构建与本地兜底分析 |
backend/energy/serializers.py |
负责数据序列化与接口数据校验 |
backend/energy/tests.py |
核心业务逻辑测试 |
backend/energy/management/commands/seed_demo.py |
一键生成演示数据 |
frontend/src/views/DashboardView.vue |
总览页 |
frontend/src/views/AnalyticsView.vue |
多维分析页 |
frontend/src/views/ForecastView.vue |
短期预测页 |
frontend/src/views/DevicesView.vue |
设备和预警管理页 |
frontend/src/views/AIAdvisorView.vue |
AI 配置与 AI 分析页 |
frontend/src/views/AdminView.vue |
管理员平台页 |
frontend/src/api.js |
统一封装前端 API 请求 |
frontend/src/router.js |
页面路由配置 |
frontend/src/style.css |
全局样式与布局规则 |
docs/*.md |
需求、设计、数据库、接口和博客文档 |
7.3 为什么我觉得这套目录结构是“舒服”的
因为它不是把所有逻辑乱塞到一个地方,而是有比较清晰的层次:
- 前端看页面和组件
- 后端看模型、接口、服务
- 文档集中放在
docs/ - 启动脚本集中放在
scripts/
这种结构对于后续维护、答辩讲解、甚至给别人接手都更友好。
八、🖼️ 前端界面展示:这套系统长什么样
这一部分在博客里很关键,因为读者通常不是先看代码,而是先看“做出来是什么样子”。
下面我把适合插入截图的位置也一起整理好了。你后面只需要把对应截图补进去即可。
8.1 登录页:系统的第一印象
登录页支持:
- 用户登录
- 用户注册
- 平台能力简介展示
- 演示账号提示
这一页的设计目标是让用户一进入系统就知道:
- 这是一个什么平台
- 主要解决什么问题
- 如何快速体验
### 8.2 总览页:把最重要的信息先给用户
总览页是整个系统里最核心的一页,它集中展示:
- 今日能耗
- 近 7 天和近 30 天能耗
- 日均能耗
- 14 天趋势图
- 设备能耗占比
- 24 小时负荷剖面
- 预算进度
- 节能建议
- 最近记录与近期预警


8.3 分析页:真正能看到“为什么”
分析页是系统的数据透明窗口,支持:
- 时间范围筛选
- 小时 / 日 / 周 / 月粒度切换
- 趋势分析图
- 设备分布图
- 原始记录样本滚动查看
如果说总览页解决的是“现在怎么样”,那么分析页解决的是:
到底是什么时候、什么设备、什么趋势导致了当前的能耗结果。
### 8.4 预测页:从“看历史”走向“看未来”
预测页是项目的核心亮点之一。
它支持:
- 未来 1 天预测
- 未来 1 周预测
- 预测曲线展示
- 上下界范围展示
- 基准值对比
- 预算剩余联动展示
- 建议解读
这一页体现的不是简单图表能力,而是系统开始具备前瞻性分析能力。
### 8.5 设备与预警页:把“管理能力”落到实处
这一页承担了两类能力:
- 设备管理
- 预警管理
用户可以在这里:
- 新增设备
- 新增预警规则
- 查看设备清单
- 查看规则列表
- 查看未读预警
- 标记预警为已读
这一页的价值在于,它把“分析”与“干预”连上了。
用户不是只能看数据,而是能真的配置规则、响应异常。

8.6 AI 能效顾问页:把平台从“分析工具”升级为“智能顾问”
这个页面是整个平台里最有辨识度的部分。
它包含两类信息:
第一类是模型接入面板:
- 模板选择
- 模型名称
- API 地址
- API Key
- 参数配置
- 保存与测试连接
第二类是 AI 分析结果区域:
- 综合风险等级
- 预算与预测联动指标
- 分析摘要
- 关键洞察
- 预测亮点
- 设备动作建议
- 历史分析记录
这个页面的意义在于:
AI 不再是一个旁观者,而是直接建立在真实业务数据之上的分析层。


8.7 管理员页:平台视角的数据总览
管理员页解决的是平台层面的管理问题。
它支持:
- 用户增删改查
- 平台综合报表查看
- 平台总能耗统计
- 平台总成本统计
- 平台趋势数据展示
- 用户能耗排行
这使得项目不只是一个“个人页面集合”,而是真正具备多角色平台能力。



九、⚙️ 技术实现里最值得讲的几个点
如果这篇博客不只是面向普通读者,而是也面向老师、面试官、开发者,那么这几个技术点很值得展开。
9.1 前后端分离,业务边界清晰
前端负责页面交互和数据可视化,后端负责数据处理、统计逻辑、预测算法和 AI 服务接入。
这种结构的优势是:
- 页面和业务逻辑解耦
- 更方便后续扩展移动端或小程序
- 更适合逐步演进功能
9.2 分析、预测、AI 拆分为独立服务层
后端没有把所有逻辑都塞进视图函数,而是把核心能力拆分到了服务层:
- 通用分析服务
- 预测服务
- AI 分析服务
这样做的好处是:
- 可维护性更高
- 便于测试
- 便于后期替换算法和模型
9.3 预测不是“摆设”,而是有兜底逻辑
很多系统在演示时喜欢说“用了机器学习”,但实际常常一旦样本不足就跑不通。
这个项目里做了两层处理:
- 样本足够时使用线性回归
- 样本不足时回退到移动平均预测
这样不管数据量大还是小,系统都能持续输出可用结果。
可以用一个很简化的伪代码来理解这个逻辑:
def forecast_energy(records, horizon):
if len(records) >= 14:
model = LinearRegression()
model.fit(records[["index"]], records["energy_kwh"])
return predict_with_bounds(model, horizon)
baseline = moving_average(records["energy_kwh"], window=7)
return fallback_prediction(baseline, horizon)
这个设计看起来不复杂,但非常实用。因为它避免了“算法写得很炫,结果一到真实页面就全是空”的问题。
9.4 🚨 预警不是静态表单,而是一条动态评估链路
我比较喜欢这个项目的一点是:预警功能不是只做一个“新增规则”表单,而是把它真正接到了数据处理链路里。
简化理解是这样的:
新增能耗记录
↓
读取当前用户有效预警规则
↓
按规则类型判断是否超阈值
↓
生成预警事件
↓
前端显示未读预警
↓
用户手动标记已读
这意味着预警不是摆设,而是有实际业务行为的。
一个很简化的判断逻辑可以写成这样:
def evaluate_alert(rule, record):
if rule.metric == "hourly_kwh" and record.energy_kwh > rule.threshold:
create_alert("小时能耗超阈值", severity="high")
elif rule.metric == "power_watts" and record.power_watts > rule.threshold:
create_alert("瞬时功率超阈值", severity="medium")
9.5 🤖 AI 接入不是写死的,而是前端可配置的
这一点是我比较看重的设计。
很多项目会把 AI 功能写成固定调用某个模型的 demo,但这样一旦换模型或换服务,就必须改后端代码。
而这个项目支持:
- 前端直接填写模型信息
- 前端直接填写 API 地址和密钥
- 测试连接后直接使用
用户配置面板的思路,大致像这样:
{
"provider_label": "DeepSeek",
"base_url": "https://api.deepseek.com",
"api_path": "/chat/completions",
"model_name": "deepseek-chat",
"temperature": 0.3,
"system_prompt": "你是一名家庭能耗分析顾问,请结合能耗、预测、预算、预警输出结论和建议。"
}
这个设计很适合在博客里强调,因为它说明这个项目的 AI 能力不是“硬编码演示”,而是有一定工程弹性的。
9.6 🛡️ AI 服务不可用时,系统还能自己兜底
如果 AI 服务没有启用、没有配置密钥、或者远程模型请求失败,系统不会直接报废,而是自动切换到本地分析逻辑。
这使得 AI 功能从“炫技模块”变成了真正可靠的增强模块。
换句话说,这个系统不是:
- 有 AI 就正常
- 没 AI 就不可用
而是:
- 有 AI 时,输出更自然、更综合、更像顾问
- 没 AI 时,依然能基于业务规则生成本地分析结果
这个思路非常工程化,也非常适合答辩时讲。
9.7 🎨 一些看起来小,但其实很影响体验的前端细节
如果只看功能清单,很多人容易忽视页面细节。但实际上一套系统好不好用,往往体现在这些不起眼的地方:
- 原始记录样本采用固定高度滚动区,避免页面被长表格拉爆
- 设备清单、规则列表、未读预警做了卡片内滚动,不破坏整体布局
- 多个页面统一用指标卡、图表卡和信息卡,让视觉结构一致
- AI 页面把“模型配置”和“分析结果”拆开,降低理解门槛
- 管理员页和普通用户页区分清晰,减少角色混淆
这些看似不是“核心算法”,但实际上非常影响读者对项目完成度的判断。
十、🧪 这个项目为什么适合拿来做答辩、博客和面试项目
我觉得这个项目的一个优势是,它能同时满足三类展示场景。
10.1 作为答辩项目,它不空
它可以自然展开成这些内容:
- 研究背景
- 需求分析
- 系统设计
- 数据库设计
- 功能实现
- 算法设计
- 测试验证
- 部署运行
老师问你“系统价值是什么”,你能答。
老师问你“技术亮点是什么”,你也能答。
老师问你“为什么不是普通管理系统”,你同样能答。
10.2 作为博客项目,它不干
有些项目技术上做得不错,但写成博客会很无聊,因为它缺少故事感。
这个项目不一样,它天然有几个读者很容易理解的切入点:
- 电费为什么高
- 家里哪台设备最耗电
- 预算会不会超
- AI 到底能不能帮我们做节能建议
也就是说,它兼具了生活化场景和工程实现感,很适合写成长文博客。
10.3 作为面试项目,它不单薄
如果在面试里介绍这个项目,你可以从不同层级切进去:
- 从产品角度讲用户价值
- 从工程角度讲前后端架构
- 从算法角度讲预测与兜底
- 从 AI 角度讲模型配置与业务结合
- 从体验角度讲界面设计与交互细节
这比只展示一个 CRUD 项目更有层次。
十一、🧑💻 这个项目适合谁看?也适合谁用?
11.1 🧑💻 如果你是开发者
你会比较喜欢它的地方可能是:
- 它是一个完整的前后端项目
- 它不只是静态展示,还包含预测和 AI
- 它的目录结构、文档、功能分层比较清晰
11.2 🚀 如果你在准备作品集
这个项目很适合作为“综合型作品”:
- 有页面
- 有接口
- 有数据模型
- 有图表
- 有算法
- 有 AI
- 有文档
信息密度足够高,而且讲起来不会空泛。
11.3 🛡️ 如果你更看重“系统像不像真的产品”
你会发现它不是一个孤立页面,而是一套完整流程:
- 登录
- 查看总览
- 深入分析
- 做预测
- 配规则
- 处理预警
- 看预算
- 做 AI 分析
- 管理平台数据
11.4 ✋ 如果你只想做一个最简单的演示页
那这个项目可能反而有点“超纲”。
因为它不是为了做一个最省事的页面,而是为了把“业务、分析、预测、AI、管理”这一整套链路串起来。
十二、🔌 这个项目怎么跑起来
如果要在博客里加一点“真实工程感”,这一节很值得保留。
12.1 启动方式
conda activate 项目
cd /root/项目
./scripts/start_backend.sh
./scripts/start_frontend.sh
启动后可以访问:
- 前端:
http://127.0.0.1:5173 - 后端:
http://127.0.0.1:8000
12.2 演示账号
admin / Admin123!demo / Demo123!family01 / Demo123!
12.3 一个很适合放在博客里的接口示例
比如 AI 分析接口,可以用一段 curl 让文章更有“不是空讲”的感觉:
curl -X POST http://127.0.0.1:8000/api/ai/analyze/ \
-H "Authorization: Token <your_token>" \
-H "Content-Type: application/json" \
-d '{
"range": "7d",
"focus": "请结合预算、预测和预警,给出家庭节能建议"
}'
你还可以放一段简化后的响应示例:
{
"risk_level": "medium",
"summary": "近 7 天家庭用电呈缓慢上升趋势,空调与热水器为主要耗能来源。",
"insights": [
"空调占比超过 35%",
"本月预算使用率已超过 72%",
"夜间负载存在持续偏高现象"
],
"actions": [
"检查空调温控和定时策略",
"缩短热水器持续加热时间",
"降低深夜待机负载"
]
}
这类内容会让读者直观感受到:这个项目不是 PPT 里的概念,而是真的能跑、能调、能返回结果的系统。
十三、🚀 如果我要继续完善它,我还会做什么
虽然目前这个项目已经形成了完整闭环,但如果继续扩展,我认为还有几个方向非常值得做。
13.1 接入真实设备或边缘网关
目前系统支持模拟数据和业务流程,如果后续接入真实智能插座、边缘网关或物联网采集模块,会让项目更完整。
13.2 增加分时电价策略
如果能把峰谷电价纳入分析和建议,系统的“节能建议”会更接近真实家庭决策场景。
13.3 增加报表导出能力
例如导出:
- 月度分析报告
- 预警统计报告
- 预测报告
这会更适合平台化落地。
13.4 增加更多预测模型
比如:
- XGBoost
- LightGBM
- LSTM
这样可以进一步比较不同模型在家庭能耗预测任务中的效果。
13.5 增加通知渠道
我觉得一个很有产品感的扩展方向是增加真正的提醒触达,比如:
- 邮件通知
- 短信提醒
- 微信 / 企业微信 / 钉钉提醒
- 浏览器通知
这样系统就不只是“登录进来看”,而是能主动触达用户。
13.6 增加多家庭 / 多房间视角
如果未来扩展成更接近真实平台的版本,我会很想加:
- 家庭维度
- 房间维度
- 设备分组维度
这样“空调耗电高”就可以被细化成“主卧空调耗电高”或者“客厅空调夜间策略不合理”。
十四、🎯 结语:我想做的,不只是一个“看图表”的系统
这个项目最初是从“家庭用电到底能不能做得更智能”这个问题出发的。
做到现在,我越来越明确地觉得:
真正有价值的,不是把图表做得多复杂,也不是单纯接一个 AI 接口,而是让系统能够真正回答用户最关心的问题:
- 我家最近为什么这么费电?
- 哪台设备最该优先优化?
- 如果继续这样用,本月会不会超预算?
- 未来一周是不是还会继续升高?
- 我现在最该做的动作是什么?
如果一个系统能把这些问题回答清楚,那它就已经不只是一个“展示系统”,而是一个真正有使用价值的产品原型。
而这,正是我做这个项目时最想实现的事情。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)