Free your EV charger.

Replacement firmware for vendor-cloud-tethered AC EV chargers (J1772). Operates fully locally. Native Home Assistant. Standards-compliant OCPP 1.6-J. Safety-supervised in C on FreeRTOS.

$ build.sh bash
# Build and flash the MCU image
$ git clone https://github.com/RAR/OpenEVCharger
$ cmake -B build -S . \
    -DCMAKE_TOOLCHAIN_FILE=cmake/arm-none-eabi-toolchain.cmake \
    -DOPENEVCHARGER_BOARD=rippleon \
    -G Ninja
$ ninja -C build && ./tools/flash.sh

Why

The current crop of consumer AC wallboxes ship dependent on a vendor cloud for remote control, scheduling, and any third-party integration (Home Assistant, evcc, an external OCPP CSMS). When the cloud is unreliable — for example, Rippleon's api.rippleonenergy.com OCPP backend frequently 504s — everything except local BLE-proximity control via the vendor app goes down with it. There is no first-party path off the cloud.

OpenEVCharger replaces both halves of the firmware so the unit operates fully locally — Wi-Fi LAN is enough, no cloud dependency — and exposes a standards-compliant OCPP 1.6-J Charge Point plus an ESPHome native API for direct Home Assistant, evcc, SteVe, or any OCPP CSMS integration.

The J1772 state machine, fault model, and self-test sequence are modeled on OpenEVSE but no source is copied. The safety core runs in C on FreeRTOS on the charger's main MCU (Cortex-M3/M4F); a Wi-Fi/BLE companion module hosts ESPHome + MicroOcpp, talking to the safety MCU over a binary TLV protocol on a single UART. The core is board-independent — adding a new charger means a pin map, a linker script, and a CMake block.

Highlights

Safety-first

GFCI (~60 ms latch), relay weld and stuck-open detection, hard and soft over-current with duty-ramp derate, CP=E sustained, over-temp, ADC out-of-range, boot self-test — all live and bench-validated. See Safety for the full table.

🔌

OCPP 1.6-J

Full Charge Point via esphome-ocpp-server + MicroOcpp. StartTransaction / StopTransaction, RFID auth, SmartCharging (SetChargingProfile → live amp-limit derate). Use any compliant CSMS.

🏠

Home Assistant native

~30 sensors, ~12 buttons, ~5 numbers, ~5 switches, ~3 binary sensors via the ESPHome native API. RFID auth UI, OTA push flow, BL0939 calibration. No vendor app, no cloud account.

📊

Sub-µA-precision metering

Per-chassis BL0939 calibration. Active power and current bench-validated to <0.1 % vs external reference at full charge.

Over-the-air updates

TLV-chunked OTA via Home Assistant; CRC verify + self-rollback on bad image. No SWD probe needed once the firmware is on.

🔧

Honest about hardware

One target bench-validated end-to-end (Rippleon ROC001). 72 sibling SKUs declared electrically identical in Rippleon's FCC filing drop in unchanged. A Nexcyber / Zopoise port is in progress. Full matrix on the Hardware page.

Status

2026.19.0 — first production cut, validated end-to-end against a real 240 V EV on 2026-05-07. Release notes ↗.

Track ongoing work in design specs and milestone plans .