1. 项目背景与需求分析
电动车作为绿色出行的重要方式,近年来在国内呈现爆发式增长。根据中国电动汽车充电基础设施促进联盟数据,截至2023年底,全国电动车保有量已突破3亿辆,而公共充电桩数量仅为180万台左右,车桩比严重失衡。这种供需矛盾导致用户经常面临"充电难"问题:找不到可用充电桩、排队时间长、支付方式不统一等痛点亟待解决。
我们团队在实际调研中发现,现有充电服务主要存在三大问题:
- 信息孤岛现象:不同运营商充电桩数据不互通,用户需要安装多个APP
- 管理效率低下:运营商无法实时监控设备状态,故障响应慢
- 资源分配不均:高峰时段部分区域充电桩超负荷,而周边桩利用率不足
针对这些痛点,我们决定开发一个基于微信小程序的智能充电服务平台,选择Python+Django作为后端技术栈,UniApp作为前端框架,主要基于以下考量:
技术选型理由:
- Python+Django组合具备快速开发优势,内置ORM和Admin系统可大幅降低开发成本
- Django REST framework能高效构建RESTful API,满足小程序数据交互需求
- UniApp"一次开发,多端发布"的特性完美适配微信生态,且便于未来扩展其他平台
- 微信支付成熟的生态体系可确保交易安全,降低支付接入门槛
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 整体架构
平台采用经典的三层架构设计:
code复制[微信小程序] ←→ [Django REST API] ←→ [MySQL数据库]
↑
[MQTT Broker] ←→ [充电桩硬件]
2.2 技术组件详解
2.2.1 后端服务层
- Django 4.1:作为核心Web框架,提供路由、视图、模板等基础功能
- Django REST framework 3.14:构建RESTful API,支持JWT认证
- Celery 5.2:异步任务处理,用于计费结算、数据统计等耗时操作
- Redis 6.2:缓存热点数据(如充电桩实时状态),减轻数据库压力
2.2.2 数据持久层
- MySQL 8.0:主数据库,存储用户信息、订单记录等结构化数据
- MongoDB 5.0:存储充电桩上报的时序数据,便于大数据分析
- MinIO:对象存储服务,用于保存充电桩上传的图片、日志等非结构化数据
2.2.3 前端展示层
- UniApp 3.0:基于Vue.js的跨端开发框架,一套代码同时生成微信小程序和H5页面
- uView UI 2.0:丰富的组件库,快速构建美观的界面
- ECharts 5.3:数据可视化,展示充电统计、收益分析等图表
2.2.4 物联网通信
- MQTT 3.1.1:轻量级物联网协议,实现充电桩与服务器的实时通信
- EMQX 5.0:开源MQTT Broker,支持百万级设备连接
3. 核心功能实现
3.1 充电桩实时监控
技术实现方案:
- 充电桩通过MQTT协议定期(每10秒)上报状态数据:
python复制# MQTT消息示例
{
"device_id": "CZ20230001",
"voltage": 220.5, # 电压(V)
"current": 10.2, # 电流(A)
"power": 2249.1, # 功率(W)
"status": 1, # 1-空闲 2-充电中 3-故障
"timestamp": 1690441200
}
- Django后端通过EMQX的Webhook接收数据,使用Django Channels处理WebSocket连接:
python复制# consumers.py
class ChargingConsumer(WebsocketConsumer):
async def connect(self):
await self.accept()
await self.channel_layer.group_add("monitor_group", self.channel_name)
async def disconnect(self, close_code):
await self.channel_layer.g
