OCPP Smart Charge Engine
/projects/ocpp-smart-charge-engine

OCPP Smart Charge Enginebuild dossier

TypeScriptNode.jsOCPPSmart ChargingWebSockets
build.metadata
RoleCreator & Maintainer
DurationMar 2026
StatusPublished on npm
TelemetryActive
overview

A library-agnostic OCPP smart-charging constraint solver that fairly and safely distributes a site's grid power across EV chargers via OCPP's SetChargingProfile command. Ships three strategies — Equal Share, Priority, and Time-of-Use — with profile builders for OCPP 1.6, 2.0.1, and 2.1, strict TypeScript types, and zero runtime dependencies.

implementation.notes
1Distribute the site's grid power across active chargers without exceeding the connection limit or tripping breakers.
2Expose three interchangeable strategies — Equal Share, Priority, and Time-of-Use — for power allocation.
3Keep the core transport-agnostic so it drops into ocpp-ws-io, raw WebSockets, or any OCPP stack.
4Ship strict TypeScript types and zero runtime dependencies for a lean, predictable footprint.
readonlyconnected
design.principles

Library-agnostic

Zero opinions on your OCPP transport — works with ocpp-ws-io, raw WebSockets, or any other implementation.

Three strategies

Built-in Equal Share, Priority, and Time-of-Use constraint solvers with a configurable minimum charge rate per EV.

Multi-protocol profiles

SetChargingProfile and ClearChargingProfile builders for OCPP 1.6, 2.0.1, and 2.1 with auto-dispatch intervals.

system.architecture
// Constraint Solver

Calculates a safe, fair power distribution across active EVs while respecting the site's grid connection limit.

// Strategy Layer

Pluggable Equal Share, Priority, and Time-of-Use strategies with per-EV minimum charge rates.

// Profile Builders

Version-aware OCPP 1.6 / 2.0.1 / 2.1 charging-profile generators with auto-dispatch and clear-profile handling.

previousOCPP Protocol ProxynextOCPP WebSocket CLI

Want to discuss a similar build?

Use this project as a reference point and send the workflow, timeline, and constraints you care about most.

open contact.env
RT