当你的电动车停在车库,屋顶的光伏板正发着电,你是否想过让它们"智能对话"——光伏发电充裕时自动给车充电,阴天时降低功率避免从电网取电?这不是科幻场景,一个名为evcc的开源项目已经实现了这一切,而且完全本地运行,无需依赖任何云服务。
源码下载:
evcc-master.zip
(3.13 MB)
🎯 项目定位:本地优先的能源大脑
evcc(EV Charge Controller)是一个用Golang编写的可扩展电动车充电控制器和家庭能源管理系统。它的核心理念是本地能源管理,所有数据和控制逻辑都在你的局域网内运行,彻底避免云服务的隐私风险和网络依赖。
从运维视角看,这是一个典型的边缘计算应用——将智能决策下沉到家庭网关,实时响应能源变化,延迟低至毫秒级。
🏗️ 架构设计:模块化的艺术
evcc采用经典的分层解耦架构:
核心层级:
- Site层:全局能源调度中心,管理电网、光伏、储能
- Loadpoint层:充电点抽象,可配置多个充电桩并行工作
- Device层:硬件适配层,通过插件系统对接70+品牌设备
这种设计让系统具备极强的水平扩展能力。你可以从单车库的1个充电桩,平滑扩展到多车位、多能源的复杂场景,只需修改YAML配置文件。
技术亮点:
- Golang的高并发特性处理实时能源数据
- 事件驱动架构,设备状态变化触发调度逻辑
- 支持OCPP、EEBus等工业协议
🚀 部署实践:容器化一键启动
作为云原生应用,evcc提供了完整的Docker镜像:
docker run -d \
-p 7070:7070 \
-v $(pwd)/evcc.yaml:/etc/evcc.yaml \
evcc/evcc:latest
配置文件采用声明式YAML,符合Kubernetes ConfigMap的管理习惯:
loadpoints:
- title: 车库充电桩
charger: wallbox
mode: pv # 光伏优先
系统会自动发现局域网内的兼容设备,大幅降低运维配置成本。
💡 智能调度:算法的魅力
evcc的核心价值在于动态负载均衡算法:
- 光伏优先模式:实时监测光伏发电,动态调整充电功率
- 低谷电价模式:结合电价API,在夜间低价时段充电
- 绿色能源模式:仅使用可再生能源,多余电量存入电池
这套逻辑在Golang的协程中高效运行,CPU占用不到5%,内存仅需50MB。
🔧 运维友好特性
可观测性:
- 内置Web UI实时展示能源流向
- 支持Prometheus指标导出,接入Grafana监控
- MQTT推送充电状态到Home Assistant
高可用:
- 无状态设计,重启不丢失调度策略
- 设备离线自动降级为手动模式
- 配置热加载,无需重启服务
安全性:
- 本地部署,数据不上云
- 支持HTTPS和基础认证
- 设备通信加密(TLS)
🌍 生态与扩展
项目在GitHub已获得5.4k星标,活跃维护中。支持的设备品牌覆盖欧美主流市场,包括:
- 充电器:Tesla、Wallbox、go-e等70+品牌
- 光伏逆变器:Fronius、SMA、Huawei等
- 电池系统:Tesla Powerwall、BYD、LG
开发者可通过插件系统扩展自定义设备,API文档完善,适合二次开发。
📊 适用场景
- 家庭用户:拥有光伏+电动车,希望降低电费
- 小型企业:管理多个充电桩,优化用电成本
- 能源研究:本地化数据采集,隐私可控
- 智能家居集成:通过MQTT接入Home Assistant等平台
🎬 结语
evcc证明了边缘计算在能源领域的巨大潜力。它用Golang的高性能、Docker的易部署、YAML的简洁配置,构建了一个完全自主可控的能源管理系统。对于运维工程师而言,这是一个绝佳的学习案例——如何将云原生理念应用到IoT场景。
如果你正在探索智能家居或能源管理方向,不妨在树莓派上部署一套evcc,体验本地化AI调度的魅力。
关注《云栈运维云原生》,获取更多开源项目深度解析!
项目地址:https://github.com/evcc-io/evcc
官方文档:https://docs.evcc.io
标签:#evcc #Github #Golang #能源管理 #智能家居 #边缘计算 #云原生