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 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 .