How Second-Life EV Battery Storage Works

The pack is kept whole. Its original BMS stays in place. A BMS-EV controller reads the pack's CAN bus, translates it, and hands the data to a hybrid solar inverter.

The short version. A complete EV battery pack, with its original BMS retained, is connected to a hybrid solar inverter through a BMS-EV controller that translates the pack's CAN bus into the inverter's protocol. The original safety architecture — cell balancing, over/undervoltage cutoff, over-temperature cutoff, contactor control — remains under the manufacturer's BMS. The inverter sees a "battery" that speaks a familiar protocol (Pylontech, BYD, or similar) and charges or discharges it based on PV, house load and grid conditions.

Step by step

  1. Choose a pack. Any pack in the compatibility matrix — Tesla Model 3/Y/S, BMW i3, Nissan Leaf, VW MEB (ID.3/ID.4/Enyaq/Q4), Kia/Hyundai E-GMP, Renault Zoe, and dozens more. Ensure it comes with the original BMS module intact.
  2. Choose a hybrid inverter. Match its DC input voltage window to the pack. LV packs (48–60 V) use SolaX X1 Hybrid, Growatt SPH, SMA Sunny Boy Storage. HV packs (150–500 V) use Deye SUN HP3, SOFAR HYD, GoodWe EH/ET, SolaX X3 Hybrid, SMA Sunny Tripower.
  3. Order a BMS-EV controller pre-configured for that exact battery + inverter combination.
  4. Wire it in. HV DC from pack to inverter, CAN from pack BMS to controller, CAN from controller to inverter, low-voltage wake and 12 V supply, precharge and main contactor control.
  5. Commission. Power the controller, watch the pack wake, verify the inverter recognises the battery, run first charge/discharge test at low current.

Architecture diagram

┌───────────────────────────────────┐ │ HOUSE / LOADS │ │ (AC 230 V single-phase or 3P) │ └────────────────┬──────────────────┘ │ AC ┌────────────────┴──────────────────┐ ┌─── DC ────┤ HYBRID INVERTER ├──── AC ── GRID │ │ (Deye / SOFAR / GoodWe / SMA…) │ │ └────────────────┬──────────────────┘ │ │ CAN (Pylontech / BYD proto) │ │ │ ┌─────────┴─────────┐ │ │ BMS-EV CONTROLLER │ │ │ Protocol bridge │ │ │ Contactor control │ │ └─────────┬─────────┘ │ │ CAN (native vehicle bus) │ │ ┌────┴──────────────────────────┬─┴─────────────────┐ │ EV BATTERY PACK │ ORIGINAL VEHICLE │ │ (Tesla / BMW i3 / MEB / …) │ BMS │ │ Cells + cooling + contactors │ Balancing │ │ │ V/T protection │ └───────────────────────────────┴───────────────────┘ │ │ PV DC (from array via MPPT) └─── goes to inverter's PV inputs

Power flow states

State 1 — Charging from PV (sunny day, house load low)

Solar PV ──► Inverter MPPT ──► DC bus ──► Battery (charging) │ └─► Small AC feed to house

The inverter's MPPT tracks the PV array. Surplus power (PV minus house load) flows into the battery. The pack BMS reports SoC and charge-current limit; the controller relays these to the inverter, which throttles when the pack asks it to.

State 2 — Discharging to house (evening / night)

Battery ──► DC bus ──► Inverter DC/AC ──► House loads │ └─► Import from grid only if battery is depleted

House load exceeds PV output. The inverter draws from the battery until the pack's SoC reaches a configured floor (typically 10–20% depending on chemistry) or the BMS signals discharge cutoff.

State 3 — Standby (winter night, no load)

Battery ──► (contactors open OR trickle draw only) BMS-EV ──► keep-alive to vehicle BMS

The controller sends periodic keep-alive frames on the vehicle CAN bus so the pack BMS does not enter deep sleep. Contactors may be open (isolated) or held closed at trickle current, depending on the setup.

State 4 — Grid-interactive / backup

GRID ↔ Inverter ↔ Battery ↔ House │ └─ Configured mode: self-consumption / time-of-use / backup / peak shaving

Hybrid inverters with backup capability disconnect from the grid on outage and continue supplying the house from battery. This requires an ATS or the inverter's built-in EPS output.

What the BMS-EV controller physically does

  1. Wakes the pack. On startup, transmits the sequence of CAN frames the vehicle expects to see from its own ECUs, so the pack BMS wakes and closes its internal contactors.
  2. Emulates the missing ECUs. Continues to publish heartbeat frames the pack BMS expects (VCU, gateway, motor-controller heartbeat, depending on the vehicle).
  3. Reads state. Subscribes to pack CAN messages carrying SoC, pack voltage, cell min/max voltage, temperature min/max, charge-current-limit, discharge-current-limit, insulation-monitor status.
  4. Translates outbound. Re-encodes the pack state into the inverter's expected CAN dialect (Pylontech, BYD, Sofar, Deye native, etc).
  5. Sequences precharge. On HV packs, closes precharge resistor first, waits for DC bus to equalise with pack voltage (typically 1–3 seconds), then closes main contactor and opens precharge.
  6. Detects faults. Any pack fault flag (isolation loss, over/under-temperature, cell voltage out of range) is translated to a fault frame the inverter recognises so the inverter shuts down safely.

Monitoring

The controller exposes pack state through several channels:

Wiring overview

HV pack (+) ────► Fuse ────► Contactor (in pack) ────► Inverter DC+ HV pack (−) ────► Contactor (in pack) ────► Inverter DC− Pack CAN-H ────► BMS-EV controller CAN0-H Pack CAN-L ────► BMS-EV controller CAN0-L BMS-EV CAN1-H ──► Inverter battery CAN-H BMS-EV CAN1-L ──► Inverter battery CAN-L 12 V + / GND ──► BMS-EV controller (from small AC/DC adapter or aux battery) Wake signal ──► pack HV-junction wake pin (per vehicle wiring)

Full pack-specific wiring diagrams are on each battery's dedicated page — Tesla Model 3, BMW i3, Nissan Leaf, VW MEB, and others.

Order a controller
Pre-configured firmware, wire it and it works

Frequently asked questions

Does the pack need to be "opened" or modified?

No. The complete pack is used as-is. The controller connects to the pack's external CAN bus and control pins — the same pins the vehicle used.

What happens if the CAN link between controller and pack drops?

The controller detects loss of pack heartbeat, opens contactors, and signals fault to the inverter. The inverter stops charge/discharge. This is the intended safety response.

Can I read cell-level voltages?

Yes, if the vehicle BMS publishes per-cell voltages on CAN (most do). The controller relays those to the Web UI and MQTT. Some vehicles group cells into module summaries only.

Does the inverter need special firmware?

No — the controller impersonates whatever battery protocol the inverter already supports (Pylontech is the most common target). No inverter firmware change is needed.

Can I connect two packs in parallel?

Two packs of the same voltage can be paralleled through their contactors, but each pack must have its own BMS-EV controller or one controller with a multi-pack firmware build. Contact us for multi-pack builds.

Does the controller draw power when the pack is idle?

Yes — a small standby load (typically under 5 W) keeps the vehicle BMS awake. If the system is fully idled for extended periods (weeks) the controller can be configured to power down the pack.

What happens during a grid outage?

If the hybrid inverter is a backup-capable model (EPS output or ATS), the inverter isolates from the grid and continues to supply the house from the battery until SoC reaches the configured floor.

Can I use this off-grid (no grid connection)?

Yes, with an off-grid or hybrid inverter configured in off-grid mode. Some inverters (Deye, Sol-Ark) support both modes; others (SMA Sunny Boy Storage) are grid-tied only.

Last updated: 2026-09-18
Current firmware: 15.0.14
Technical author: BMS-EV engineering team (Clima Boost sp. z o.o., Poland)
Reviewer: Jakub Lipiński, founder/lead engineer BMS-EV
Revision: 2026-09-18 — aligned with firmware 15.0.14, SOFAR 180–800 V DC verification, Kia EV6 + SOFAR HYD 15KTL case study reference
Related: Second-Life Overview · Cost · Getting Started