EVCC 定时器功能:预约充电与智能调度
【免费下载链接】evcc Sonne tanken ☀️🚘 项目地址: https://gitcode.com/GitHub_Trending/ev/evcc
概述
EVCC(Electric Vehicle Charge Controller)是一个开源电动汽车充电控制器和家庭能源管理系统。其定时器功能是实现智能充电调度的核心组件,允许用户根据电价、太阳能发电情况或个人需求来规划充电时间。本文将深入解析EVCC的定时器架构、实现原理和使用方法。
定时器核心架构
Timer基础组件
EVCC的定时器系统基于core/timer.go实现,提供了基础的计时功能:
// Timer测量开始和停止事件之间的活动时间
type Timer struct {
sync.Mutex
clck clock.Clock
started time.Time
wakeupAttemptsLeft int
}
const (
wakeupTimeout = 30 * time.Second // 唤醒超时时间
wakeupAttempts = 6 // 最大唤醒尝试次数
)
type WakeUpEvent int
const (
WakeUpTimerInactive WakeUpEvent = iota // 定时器未激活
WakeUpTimerElapsed // 定时器已过期
WakeUpTimerFinished // 定时器已完成
)
充电计划系统
在core/loadpoint_plan.go中,EVCC实现了完整的充电计划功能:
// 获取充电计划
func (lp *Loadpoint) GetPlan(targetTime time.Time, requiredDuration, precondition time.Duration) api.Rates {
if lp.planner == nil || targetTime.IsZero() {
return nil
}
return lp.planner.Plan(requiredDuration, precondition, targetTime)
}
// 检查充电计划是否有当前活动的时段
func (lp *Loadpoint) plannerActive() (active bool) {
// 实现复杂的计划激活逻辑
}
功能特性
1. 智能时间调度
EVCC支持基于以下条件的智能调度:
| 调度类型 | 描述 | 适用场景 |
|---|---|---|
| 电价优化 | 在电价低谷时段充电 | 分时电价用户 |
| 太阳能优先 | 优先使用太阳能发电充电 | 光伏系统用户 |
| 目标时间 | 在指定时间前完成充电 | 日常通勤需求 |
| SOC目标 | 充至指定电量百分比 | 电池维护 |
2. 计划管理
3. 实时调整
EVCC的定时器支持动态调整:
- 超时处理:30秒唤醒超时机制
- 重试机制:最多6次唤醒尝试
- 计划覆盖:处理计划超时和提前完成情况
配置示例
基本定时配置
loadpoints:
- title: "家用充电桩"
plan:
targetTime: "07:00" # 目标完成时间
targetSoc: 80 # 目标电量百分比
mode: "offpeak" # 充电模式:offpeak(低谷)、pv(太阳能)、instant(即时)
高级计划配置
loadpoints:
- title: "智能充电"
plan:
targetTime: "06:30"
targetSoc: 90
mode: "cost" # 成本优化模式
tariffs:
- from: "00:00"
to: "06:00"
price: 0.25 # 低谷电价
- from: "06:00"
to: "22:00"
price: 0.45 # 平时电价
- from: "22:00"
to: "24:00"
price: 0.35 # 高峰电价
技术实现细节
计划算法
EVCC使用先进的计划算法来优化充电过程:
// 计算所需充电时长
func (lp *Loadpoint) getPlanRequiredDuration(goal, maxPower float64) time.Duration {
if lp.socBasedPlanning() {
if lp.socEstimator == nil {
return 0
}
return lp.socEstimator.RemainingChargeDuration(int(goal), maxPower)
}
energy := lp.remainingPlanEnergy(goal)
return time.Duration(energy * 1e3 / maxPower * float64(time.Hour))
}
状态管理
使用场景
场景1:日常通勤优化
痛点:每天早晨需要满电出发,但不想支付高额电费
解决方案:
plan:
targetTime: "06:30"
targetSoc: 100
mode: "offpeak"
# 系统会自动在电价最低的时段完成充电
场景2:太阳能最大化利用
痛点:希望尽可能使用自发电,减少电网用电
解决方案:
plan:
targetTime: "18:00"
targetSoc: 80
mode: "pv"
# 优先使用太阳能,不足时再用电网补足
场景3:成本最优充电
痛点:电费支出过高,需要智能优化充电成本
解决方案:
plan:
targetTime: "07:00"
targetSoc: 90
mode: "cost"
tariffs:
- time: "00:00-06:00", price: 0.20
- time: "06:00-22:00", price: 0.50
- time: "22:00-24:00", price: 0.35
最佳实践
1. 计划设置建议
| 参数 | 推荐值 | 说明 |
|---|---|---|
| targetSoc | 80-90% | 延长电池寿命 |
| targetTime | 出发前1小时 | 预留缓冲时间 |
| 模式选择 | 根据需求选择 | 成本/环保/速度 |
2. 监控与调整
# 查看当前充电计划
evcc status --plan
# 强制重新计算计划
evcc plan recalculate
# 查看计划详细时间表
evcc plan details
3. 故障排除
常见问题及解决方案:
- 计划无法执行:检查充电桩连接状态
- 充电过早停止:调整
smallSlotDuration参数 - 计划超时:增加
wakeupAttempts值
性能优化
内存管理
EVCC的定时器使用轻量级设计:
- 单次计划内存占用 < 1KB
- 支持并发多个充电计划
- 自动垃圾回收过期计划
计算效率
// 使用高效的时间计算算法
func plannerActive() bool {
// 优化的时间比较逻辑
// 减少不必要的计划重计算
return active
}
总结
EVCC的定时器功能提供了一个强大而灵活的充电调度系统,支持多种智能充电场景。通过合理的配置和使用,用户可以:
- 节省电费:利用低谷电价时段充电
- 环保充电:优先使用可再生能源
- 便捷管理:自动完成充电计划
- 电池保护:智能控制充电策略
该系统的模块化设计和开源特性使其能够不断演进,满足日益复杂的电动汽车充电需求。随着智能电网技术的发展,EVCC的定时器功能将继续发挥重要作用,为用户提供更加智能、经济的充电体验。
【免费下载链接】evcc Sonne tanken ☀️🚘 项目地址: https://gitcode.com/GitHub_Trending/ev/evcc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



