Home › Research
Published degradation data for EV packs comes almost entirely from vehicles. There is very little public field data on what those same packs do once they are installed as stationary storage. This programme is an attempt to build that dataset.
Status as of 2026-09-19: methodology published, dataset not yet published. This page defines what will be collected, how it will be anonymised and what will be released. No aggregate results are published yet, because the consented sample is not large enough to release without risking re-identification or drawing conclusions from too few installations. This page will be updated when that changes.
Vehicle-fleet degradation studies are reasonably well covered — Recurrent and Geotab both publish large-sample analyses, and academic work such as Preger et al. (2020) characterises cell-level ageing under controlled cycling. What none of them covers is the second-life stationary case, where the duty cycle is completely different:
Extrapolating vehicle degradation curves onto that duty cycle is an assumption, not a measurement. The purpose of this programme is to replace the assumption with data.
Each contributed installation record uses the following fields. Fields marked required are the minimum for a record to be usable; the rest improve the analysis where available.
| Field | Type | Required | Notes |
|---|---|---|---|
battery_family | string | Yes | e.g. "Tesla Model 3 LR NCA" — matches a profile in batteries.csv |
battery_chemistry | enum | Yes | NCA / NMC / LFP |
pack_capacity_nominal_kwh | number | Yes | As-new nameplate capacity |
pack_year_of_manufacture | year | Yes | Used to derive calendar age at commissioning |
soh_at_commissioning_pct | number | Yes | Measured, with the measurement method stated |
soh_measurement_method | string | Yes | e.g. UDS diagnostic, ScanMyTesla, LeafSpy, OEM BMS report |
inverter_family | string | Yes | Matches a profile in inverters.csv |
inverter_firmware | string | No | Version string as reported by the inverter |
bms_ev_hardware_revision | string | Yes | e.g. HW3.1 |
bms_ev_firmware | string | Yes | e.g. 16.5.0 |
commissioning_month | YYYY-MM | Yes | Month only — day is dropped during anonymisation |
climate_zone | enum | Yes | Köppen classification group, not country or city |
enclosure_type | enum | No | Indoor conditioned / indoor unconditioned / garage / outdoor enclosure |
typical_daily_dod_pct | number | No | Averaged over the reporting period |
cumulative_throughput_kwh | number | No | Total energy through the pack since commissioning |
equivalent_full_cycles | number | No | Derived from throughput and usable capacity |
soh_current_pct | number | No | Latest measurement, same method as commissioning where possible |
cell_imbalance_mv | number | No | Max minus min cell-group voltage at mid-SoC |
fault_events | number | No | Count of BMS-reported protection events over the period |
reporting_period_months | number | Yes | Operating months covered by this record |
When the consented sample supports it, the following will be released under an open data licence:
docs.bms-ev.com/data/.If you run a second-life EV battery installation — whether or not it uses a BMS-EV controller — you can contribute a record through the integration report template on GitHub. The template includes an explicit consent checkbox. Installations using other controllers (Battery-Emulator, SimpBMS, Orion BMS, Batrium, REC) are welcome and will be recorded with the controller identified, because controller architecture is one of the variables worth tracking.
Researchers, installers or test laboratories interested in independent verification or joint publication can contact office@bms-ev.com.
Until this programme produces its own data, the life projections quoted elsewhere in this documentation are derived from the following published sources combined with residential duty-cycle assumptions. They are estimates, not measurements of second-life stationary installations: