Everything you need to know about OCPP, EV charging simulation, and SimItNow.
Everything you need to know about OCPP, EV charging simulation, and SimItNow.
Understanding OCPP
OCPP (Open Charge Point Protocol) is the open communication standard between EV charging stations and a back-end management platform (CSMS). It defines how a charger authenticates drivers, starts and stops sessions, reports energy, and receives remote commands. OCPP 1.6 over JSON/WebSocket is the most widely deployed version today.
A CSMS (Charging Station Management System) is the server-side software that manages a network of EV chargers: driver auth, billing, remote control, energy reporting, firmware updates, and smart charging. SimItNow lets CSMS vendors test all of this without physical hardware.
Yes. CPMS (Charge Point Management System) and CSMS (Charging Station Management System) refer to the same backend: the software that authorizes charging sessions, tracks energy, and sends remote commands to EV chargers over OCPP. "CSMS" is the term used in the OCPP specification itself; "CPMS" is common vendor and regional terminology for the identical system. SimItNow works the same way regardless of which term your team uses.
EVSE (Electric Vehicle Supply Equipment) is the logical or physical unit that supplies power to an EV: what most people call a charging point or connector outlet. One station can contain multiple EVSEs, each with one or more connectors. SimItNow simulates this full hierarchy.
OCPP 1.6 uses a flat message model over a single WebSocket per station. OCPP 2.0.1 introduces a structured device model, native multi-EVSE support, enhanced security (TLS, certificates), improved smart charging, and display message support. SimItNow fully supports both OCPP 1.6 and OCPP 2.0.1, and it supports OCPP 2.1, which builds on 2.0.1.
SimItNow fully implements OCPP 1.6 across all standard feature profiles: Core, Firmware Management, Local Auth List, Reservation, Smart Charging, and Remote Trigger. The simulator behaves like real hardware: BootNotification handles Pending responses correctly, Soft and Hard resets are differentiated, ChangeAvailability returns Scheduled during active sessions, reservations expire automatically at their expiry time, authorization responses are cached with offline fallback, and MeterValues honour your MeterValuesSampledData and ClockAlignedDataInterval configuration. SimItNow also fully implements OCPP 2.0.1: connect 2.0.1 stations with full transaction lifecycle (TransactionEvent), smart charging profiles, and device model support. OCPP 2.1 is supported too: create a station with protocol: "ocpp2.1" and it behaves like a 2.0.1 station while answering every OCPP 2.1 request your CSMS can send. V2X, DER control, tariffs and battery swap get a clear “not supported” reply and are not simulated.
About OCPP Simulators
A real charger has firmware, hardware, and power electronics. An OCPP simulator, also called a charge point emulator or virtual charge point (VCP), is pure software. It speaks the OCPP protocol over WebSocket exactly as a real charger would, but there is no physical device. You use it to test your CSMS during development and QA without needing any charging hardware on-site.
Yes. Each station is independent, so you can run OCPP 1.6, 2.0.1 and 2.1 stations at the same time under one API key. Specify protocol: "ocpp1.6", protocol: "ocpp2.0.1" or protocol: "ocpp2.1" in the create request. This lets you test mixed-protocol fleets or validate a CSMS migration scenario where both protocol versions are active at once.
Yes. Because SimItNow implements the OCPP 1.6 and 2.0.1 specifications closely, including feature profiles, message sequencing, and configurable security modes, you can use it to validate how your CSMS/CPMS interoperates with a range of charging-station behaviors, not just one reference implementation. It's a practical way to catch protocol-level bugs during development, before an official OCPP compliance testing tool (such as the Open Charge Alliance's OCTT) or a real charger finds them for you.
Use the REST API from any CI/CD pipeline. A typical test: (1) create a station pointed at your CSMS under test, (2) connect a virtual EV and trigger a transaction, (3) assert on your CSMS's response via its own API or logs, (4) delete the station. Each test is stateless and runs in seconds. The REST API works from any language: shell, Python, JavaScript, or a test framework like pytest or Jest.
Getting Started
Yes. Sign up, confirm your email and generate your API key on the dashboard, with no credit card. The free plan gives you one chargepoint and 500 OCPP messages a day. Need more capacity to evaluate? Email us to request a free trial of up to 500 chargepoints.
Every OCPP message between your stations and a CSMS, in either direction, Heartbeats included. The allowance is 500 messages per chargepoint per day and resets at 00:00 UTC. The dashboard warns you at 80%, and stations are disconnected only after they pass the allowance by 10%. The allowance section below has the full rules and a calculator.
No. SimItNow is a cloud service at www.simitnow.com. Sign up, confirm your email, generate your API key and start making REST API calls, with no Docker and no server to manage. It works from any environment: dev machine, CI pipeline, or load-testing script.
Pass your CSMS WebSocket URL when creating a station. SimItNow opens the connection immediately, sends BootNotification, and begins periodic Heartbeats at the interval your CSMS specifies. Plain ws://, TLS wss://, and Basic Auth connections are all supported via the optional security field.
SimItNow connects out to your CSMS URL, so it must be publicly reachable. For local dev, expose your CSMS with ngrok (ngrok http <port>, free tier, random subdomain each run) or Cloudflare Tunnel (cloudflared tunnel --url http://localhost:<port>, free, persistent subdomain). Both give you a wss:// URL; use that as the CSMS endpoint when creating a station in SimItNow.
Yes. SimItNow also runs its own Central System (CSMS) for OCPP 1.6, 2.0.1 and 2.1: the reverse of connecting SimItNow to your CSMS. Your CSMS instance is open by default, so you can point your chargepoint client at your wss:// connection URL (from PUT /v2/csms) with no registration and no password, and validate its handshake, BootNotification, and transaction flow against a real Central System. If you switch the instance to private mode, register each chargepoint from the dashboard's “Chargepoints (CSMS)” section (or the v2 API) to get a one-time Basic Auth password.
Yes, and it is the default. Your CSMS instance is public, which accepts any chargepoint with no allow-list and no credentials at all: it is fully unauthenticated (OCPP Security Profile 0). The number of chargepoints that can be connected at once equals your charging station allowance. It is meant for short-lived testing, such as a chargepoint vendor validating their own client, not a permanent setup: anyone who knows your csmsId can connect while it is public. To require registration and a per-chargepoint password, switch the instance to private mode through the API.
Simulating Charging Sessions
Create a station, connect it to your CSMS, create a virtual EV, and plug it into a connector. Your CSMS sends RemoteStartTransaction, and SimItNow responds Accepted, opens the transaction, and begins sending periodic MeterValues. The EV's SOC rises realistically throughout the session. To test the opposite case, create the station with emulateRemoteStartRejected: true and it will answer Rejected to every remote start instead.
Use the error endpoints to set any OCPP 1.6 error code on a connector: Faulted, GroundFailure, HighTemperature, InternalError, OverCurrentFailure, PowerMeterFailure, OtherError. SimItNow sends a StatusNotification immediately. Use the reset endpoint to clear it.
Call network/disconnect to drop the WebSocket instantly, as if the charger lost internet. SimItNow then reconnects automatically with backoff and random jitter, exercising your CSMS reconnect logic and session recovery. Call network/connect to reconnect on demand.
Scale & Performance
Yes. Each station runs as an independent asyncio task with its own WebSocket connection. Create, update, and delete hundreds simultaneously via the REST API. SimItNow's cloud infrastructure handles the concurrency, with no configuration needed on your side.
Yes, load testing at scale and EV charging stress testing is a primary use case. Script the REST API to spin up hundreds of stations and EVs, start transactions across all of them, and observe how your CSMS handles concurrent BootNotifications, Heartbeats, MeterValues, and transaction messages, all sending realistic OCPP 1.6 traffic, not synthetic pings.
Integration & Security
No. SimItNow simulates charging stations, EVSEs, connectors, and electric vehicles entirely in software. From your CSMS's perspective it is indistinguishable from real hardware. Ideal for teams building a CSMS/CPMS backend before chargers are available, or for automated regression testing after every code change.
SimItNow REST API calls require the SIMITNOW-API-KEY header. For outbound CSMS connections, SimItNow supports three security modes: plain WebSocket with no auth (SP-0), Basic Auth via the security.basicAuth field in the create request (SP-1), and TLS/WSS connections with optional server certificate skip for self-signed dev setups. Pass "security": {"basicAuth": {"password": "secret"}} alongside your CSMS URL, and the Authorization: Basic header is added to the WebSocket handshake automatically.
How the daily message allowance works, plus a calculator to estimate how many messages your test setup uses.
The estimate counts every MeterValues request and its reply while vehicles are charging, plus every Heartbeat request and its reply. Boot, status and transaction messages add a little more, so leave some headroom. A longer heartbeat interval, for example 600 seconds or more, lowers the idle cost. Your CSMS sets it through BootNotification or ChangeConfiguration. The figures above use the default values; with JavaScript on, they update as you type.
Create a free account, generate an API key and connect a virtual station to your CSMS. You do not need a credit card or any installation.