OCPP 1.6 Behavioral Completeness
A landmark release bringing SimIt's OCPP 1.6 simulator to full specification coverage.
Every major message flow now behaves exactly as a real charge point would —
authorization caching, correct MeterValues timing, scheduled availability changes,
clock-aligned intervals, and graceful reset handling.
Transaction & Metering
feat
StopTransaction now sends transaction_end MeterValues immediately before the StopTransaction call, as required by OCPP 1.6 §5.11. The final meter reading and id_tag are correctly included in the stop payload.
feat
MeterValuesSampledData config respected — the simulator reads the comma-separated measurand list from OCPP configuration and builds only the requested SampledValues, matching real hardware behavior.
feat
ClockAlignedDataInterval MeterValues — periodic meter readings now fire on absolute clock boundaries (e.g. :00, :15, :30, :45) rather than relative offsets, matching §5.8.
Reset & Boot
feat
Soft Reset gracefully stops active transactions — sends StopTransaction with reason SoftReset before reconnecting, instead of cutting the WebSocket mid-session.
feat
BootNotification Pending status handled — the simulator waits for the CSMS-specified interval and retries boot without starting any periodic tasks, matching §4.2 state machine.
Authorization
feat
Authorization cache with LocalAuthorizeOffline fallback — the local authorization list is checked first, then the CSMS. Responses are cached so that when the CSMS is unreachable and LocalAuthorizeOffline=true, the last known result is used instead of rejecting the card.
Availability & Reservations
feat
ChangeAvailability returns Scheduled on charging connectors — the change is queued and applied automatically when the active transaction ends, with a StatusNotification sent after application. Supports connector_id=0 (apply to all connectors).
feat
Reservation auto-expiry — a background task fires at expiry_date and sends a StatusNotification returning the connector to Available, matching §5.12.
Bug Fixes
fix
Temperature measurand no longer sent twice per sample when send_empty_meter_values is enabled.
fix
Clock-aligned MeterValues task no longer spawns a duplicate on reconnect — only one task runs at a time.
Dashboard — Persistent Collapsible Cards
The user dashboard gets a major usability overhaul: every information panel is now collapsible, and the open/closed state persists across page reloads via localStorage.
ux
All dashboard cards are now collapsible — API Key, Usage, OCPP Backends, Simulators, and Logs panels use native <details> elements with smooth transitions.
ux
Card state persisted in localStorage — your preferred panel layout is remembered between sessions.
feat
Periodic log loading — the Logs card auto-refreshes while expanded, pauses when the tab is hidden.
ux
Log rows compacted and reformatted for single-line display; horizontal scrollbars hidden; response type shown inline.
Live OCPP Traffic Logs
Real-time WebSocket message logging lands in the dashboard. Every OCPP frame flowing between your simulated charge points and the CSMS is captured and displayed per API key.
feat
Dashboard OCPP log tap — every <<< receive and >>> send is captured from the WebSocket layer and streamed to the dashboard Logs panel.
feat
Admin scoped logs per API key — the admin panel now shows expanded cards with per-key OCPP traffic for support and debugging.
feat
DataTransfer support — improved handling of vendor-specific DataTransfer messages in both directions.
ux
Dashboard OCPP Backends card added — view and manage CSMS connection targets from the dashboard without using the REST API.
Dashboard Quota Auto-Refresh
Quota counters now update live — no page reload needed when simulators are created or deleted.
feat
Live quota counters — the Usage panel polls /dashboard/quota every few seconds and updates CS/EV counts without a full page reload.
feat
Simulator management from the dashboard — create and delete CS/EV simulators directly from the UI alongside the REST API.
Multi-Connector EVSE & Connector Interlock
Charging stations can now simulate multi-connector EVSEs with realistic connector interlock behavior — sibling connectors lock and unlock as charging sessions start and end.
feat
Connector interlock — when charging starts on connector A, sibling connectors on the same EVSE transition to Unavailable automatically.
feat
Preparing interlock — sibling connectors transition to Preparing when an EV plugs in, before charging begins.
feat
Auto-unlock on session end — sibling connectors return to Available after StopTransaction completes.
Security Profile 1 — Basic Auth over WebSocket
OCPP Security Whitepaper SP-1 support: charge points can now authenticate to the CSMS using HTTP Basic Auth on the WebSocket handshake.
security
SP-1 Basic Authentication — provide a username/password when creating a charge point; SimIt sends the encoded Authorization header on every WebSocket connection attempt.
security
Client certificate support — TLS mutual authentication via client certificate for CSMS endpoints that require it.
feat
Security credentials are persisted and restored automatically on restart — no need to re-configure charge points after a deployment.
REST API v2
A cleaner, more ergonomic API surface. v2 routes use a consistent resource path structure for creating and managing both OCPP 1.6 and OCPP 2.0.1 simulators.
feat
API v2 routes registered — /api/v2/cs/ and /api/v2/ev/ endpoints with a versioned URL switcher in the docs.
fix
Deleting a charge point now reliably cleans up its state regardless of which instance receives the request.
ux
Docs page gets a v1/v2 version switcher with sticky tab bar so endpoint lists stay readable while scrolling.