Model expected battery cycle count under dispatch behavior #11

Open
opened 2026-07-17 01:17:56 +00:00 by claude-bot · 1 comment
Contributor

docs/implementation-audit.md under Battery Cycle Information: Current batteries include cycle life and the UI displays approximate years at one cycle/day. There is no modeled expected cycle count under dispatch behavior yet.

One cycle/day is a placeholder. The hourly simulation already knows exactly how much the battery is charged and discharged, so actual annual cycle count can be derived from the selected dispatch rather than assumed.

This matters because dispatch aggressiveness (Smart mid-peak, Ultimate 6am-10pm) directly trades battery lifespan for arbitrage savings, and the app currently shows the savings side of that trade without the wear side.

Supports the roadmap Guiding Decision: Long-term modeling should include battery cycle expectations and solar panel lifetime/degradation. The solar half is done; the battery half is not.

Code: src/lib/simulation.js, src/lib/batteries.js

`docs/implementation-audit.md` under `Battery Cycle Information`: *Current batteries include cycle life and the UI displays approximate years at one cycle/day. There is no modeled expected cycle count under dispatch behavior yet.* One cycle/day is a placeholder. The hourly simulation already knows exactly how much the battery is charged and discharged, so actual annual cycle count can be derived from the selected dispatch rather than assumed. This matters because dispatch aggressiveness (Smart mid-peak, Ultimate 6am-10pm) directly trades battery lifespan for arbitrage savings, and the app currently shows the savings side of that trade without the wear side. Supports the roadmap Guiding Decision: *Long-term modeling should include battery cycle expectations and solar panel lifetime/degradation.* The solar half is done; the battery half is not. Code: `src/lib/simulation.js`, `src/lib/batteries.js`
Author
Contributor

Partially addressed by b31aa8c (Add battery degradation and rate-escalation-adjusted payback), which landed independently.

That commit models degradation over time — a flat degradationPct (2%/yr default) compounded per year in calculateAdjustedPaybackYears and in projections. It does not model cycle count under dispatch, which is what this issue asks for.

The distinction still matters, and arguably matters more now: the flat 2%/yr rate is independent of how hard the battery is actually worked. Selecting Ultimate Savers 6am-10pm dispatch cycles the battery far harder than peak-only dispatch, but both currently degrade at the same 2%/yr. The hourly simulation already knows the real charge/discharge throughput, so actual cycle count is derivable — and could drive the degradation rate rather than assuming it.

Keeping open. Scope is now narrower and better defined: feed simulated cycle count into the existing degradation model rather than build degradation from scratch.

Partially addressed by `b31aa8c` (*Add battery degradation and rate-escalation-adjusted payback*), which landed independently. That commit models degradation **over time** — a flat `degradationPct` (2%/yr default) compounded per year in `calculateAdjustedPaybackYears` and in projections. It does **not** model **cycle count under dispatch**, which is what this issue asks for. The distinction still matters, and arguably matters more now: the flat 2%/yr rate is independent of how hard the battery is actually worked. Selecting Ultimate Savers 6am-10pm dispatch cycles the battery far harder than peak-only dispatch, but both currently degrade at the same 2%/yr. The hourly simulation already knows the real charge/discharge throughput, so actual cycle count is derivable — and could drive the degradation rate rather than assuming it. Keeping open. Scope is now narrower and better defined: feed simulated cycle count into the existing degradation model rather than build degradation from scratch.
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rbrooks/BatteryStorageCalculator#11
No description provided.