Remote Start Now Works On A Timed-Out Connector
- Fixed: if a cable was left plugged in long enough for the connection timeout to pass, a remote start sent from your CSMS was answered “accepted” but the charging session never actually began. The station now starts the session as its answer promised.
- A remote start that is accepted but cannot be carried out now leaves a diagnostic trail for support instead of failing silently.
Internal Reliability Improvements
- Internal reliability improvements — no visible changes in this release.
Account-Wide Service Announcements
- We can now send an email to every registered account for important service updates — you may occasionally receive one of these from us going forward, separate from support-ticket replies.
Docs Link Simplified to the Footer Only
- The Docs link has been removed from the main site nav — the API reference page is still one click away from every public page, now solely via the footer link added last release.
Docs Link Added to the Footer
- The API reference page is now linked from the footer of every public page, alongside News, Status, and Contact us — not just from the main site nav, so it's one click away no matter which page you're on.
The API Reference Is Now Public
- The API reference page no longer requires signing in — anyone can now read it, including a placeholder key in every example instead of a real one. It's also indexable by search engines, so it can be found directly from the web now, not just from a link inside the product.
- Signed-in visitors still see their own real API key baked into the examples, exactly as before.
- Added a Docs link to the main site nav, so the API reference is now one click away from the homepage, the articles page, and the news page — not just reachable by URL.
Several v2 API Actions Are Now Reachable
- Fixed several v2 API actions — charge point fault reporting, network connect/disconnect, transactions, security events, and EV connection/discharge — that were incorrectly rejected with a “not found” error when called through api.simitnow.com. These now work exactly as documented in the API reference.
Improved Dashboard Deployment Reliability
- Fixed an issue that could prevent a new dashboard release from starting up — already-running dashboards kept serving normally throughout, so this was never visible as downtime, only as a delay before the newest release became available.
The Current Version Is Now Shown in the Footer
- Every page now shows the running version in the footer, linked straight to this page, so you can always tell which release you're on without having to check here first.
Three More OCPP 1.6 Conformance Fixes
- Reserving “any connector” is now correctly rejected. Stations don't support reserving connector 0 (the standard way a CSMS asks for any free connector). Previously this was misreported as the station being occupied; it's now reported as unsupported, so it's clear a specific connector is required.
- A reservation now recognizes a related card, not just the exact one used to make it. If a presented card isn't the reservation's own card but is registered in the station's local authorization list or cache as belonging to the same group, the reservation is now honored for it too — matching how a real station groups cards under one account.
- Setting a meter or billing data field to a measurement type the station can't produce is now rejected instead of silently accepted. Affects the four configuration keys that control which readings appear in meter values and end-of-transaction billing data.
Trigger a Security Event On Demand
- Trigger security events on demand. A new API call makes a station report a security event — tamper detection, a failed maintenance login, a cleared security log, or any of the other standard types, plus your own vendor-specific ones. Security events are reported by the station rather than requested by the CSMS, so there was previously no way to exercise your CSMS's handling of them.
Three OCPP 1.6 Conformance Fixes
- Remote start without a connector number now works. If your CSMS sends a remote start request without naming a connector — the usual way to say “start on any free connector” — the station now picks one and replies normally. It previously answered with a protocol error, so the transaction could never begin.
- A plugged-in cable that is never authorized now settles correctly. When a cable is connected but no valid ID is presented before the connection timeout, the connector reports Finishing instead of returning to Available. This prevents a second driver's card from starting a session on someone else's cable, and the connector frees itself as soon as the cable is unplugged.
- Connector phase rotation is now reported. Stations answer the standard phase-rotation configuration request, so CSMS conformance checks no longer flag it as missing.
API Requests No Longer Fail During High-Volume EV Redistribution
- Under very high load — specifically, a large number of electric vehicles being redistributed across simulator instances at once — API requests could previously come back as a bare, unhelpful server error. They now come back as a proper “temporarily unavailable, please retry” response with guidance on how long to wait before retrying, and no internal error details are exposed in the response.
- A large EV redistribution now runs with an internal concurrency limit, so it can no longer consume so many resources at once that it starves unrelated, ordinary API requests.
The Dashboard Now Tells You When Your Session Has Ended
- A dashboard left open until its sign-in session expired kept showing the counts, simulator lists and tickets it had loaded earlier, with nothing to say they had stopped updating. It now stops refreshing and shows a Session expired notice with a link back to sign-in, so stale numbers are never mistaken for live ones.
- The page also stops retrying in the background once the session has ended. Previously each panel kept requesting fresh data every few seconds indefinitely — one browser tab left open produced hundreds of rejected requests an hour and never recovered on its own.
- Replying to, closing or opening a support ticket after the session has ended now raises the same notice instead of quietly doing nothing. Whatever you typed stays on the page, so you can copy it before signing in again.
API Documentation Now Shows One Address That Actually Works
- The REST API section on the home page listed endpoints under
/api/v1/cs/..., while the “Get started” steps said /cs/create/{id} and the copy-paste examples right beside them used https://api.simitnow.com/v1/cs/create/CP-001 — three different addresses for the same API, and only the last one worked. Anyone who copied a row out of the reference table got a 404 and had no way to tell it was the documentation that was wrong, not their API key. Every path on the page now shows the full working address.
- The same mix-up appeared in the API reference page, where cross-references such as “poll
GET /api/v2/cs/{cb_id}” still carried an /api prefix that is not part of the public address. Those now match the endpoint headers on the same page.
Log and Security Log Retrieval Now Simulates a Realistic Upload
- Retrieving a diagnostics or security log from a charging station now walks through the same realistic upload sequence as a diagnostics file: Uploading → Uploaded on success, or Uploading → Upload Failure → Idle on a simulated failure. Previously the station only reported a single, immediate “Idle” status regardless of the request, which did not exercise a CSMS's own upload-progress handling.
- Two new configuration keys let you control the simulated outcome:
LogSimulatedOutcome (Uploaded or UploadFailure, defaults to Uploaded) and LogSimulatedDelaySeconds (defaults to 0), matching the existing DiagnosticsSimulatedOutcome/DiagnosticsSimulatedDelaySeconds keys already used for diagnostics file retrieval.
OCPP 2.0.1 Meter Readings and Stop Reasons Now Pass CSMS Validation
- OCPP 2.0.1 charging stations now send meter readings as numbers instead of text. A CSMS that validates incoming messages against the OCPP 2.0.1 schema was rejecting every reading with FormatViolation — “must be number”, which meant energy, power and state-of-charge values never reached it during a transaction. OCPP 1.6 stations are unaffected: that version of the protocol defines the same field as text, and they continue to send text.
- The stop reason reported when an OCPP 2.0.1 transaction ends is now a valid OCPP 2.0.1 reason. Ending a transaction previously reported values such as RemoteStop or StopAuthorized, which are not valid stop reasons in the protocol, so a validating CSMS rejected the final transaction message too. Remote stops now report Remote, local stops Local, and emergency stop and power loss are each reported distinctly instead of both arriving as the same reason.
Dashboard Simulators List Now Stays in Sync
- The dashboard's Simulators list now refreshes automatically when a charging station or electric vehicle is created or deleted somewhere else — another browser tab, the admin panel, or an automated process. Previously only the CS/EV count updated live; the list of simulators itself stayed as it was when the page was loaded until you refreshed the page.
More Search Terms Covered on the Homepage
- The homepage now also uses the terms charge point emulator, virtual charge point (VCP), staging environment testing, OCPP conformance testing, interoperability and protocol validation testing, and EV charging stress testing / load testing at scale — all naming things SimItNow already does, just under terminology some teams search for instead of the terms already on the page. A new FAQ answers whether SimItNow can be used for OCPP interoperability and protocol validation testing. No behavior change.
CPMS Terminology Added Across the Site
- The homepage, FAQ, and several OCPP articles now also use the term CPMS (Charge Point Management System) alongside CSMS — they name the same backend, just under different vendor and regional terminology. No behavior change, just easier to find if that's the term you search for.
Links Now Point At www.simitnow.com Everywhere
- Every link this site generates about itself — what shows up in search results, what social previews use, and the confirmation link in the account-verification email — now points at
www.simitnow.com instead of the retired simit.ddosoft.com address. Old links you already have keep working (they still redirect), this just means new ones are direct.
- Articles now link to related articles at the bottom of the page, so you can go straight from one OCPP topic to another instead of returning to the article list each time.
New Contact Address: info@simitnow.com
- Everywhere the site invites you to write to us — the pricing plans, the trial request, the FAQ, the footer's “Contact us” link and your dashboard — now shows
info@simitnow.com instead of the old DDOSoft address. Ticket notification emails come from the same address. Mail sent to the old address still reaches us, so nothing you have already saved stops working.
Support Can Now Confirm Your Account By Hand
- If a verification email never arrives — a spam filter ate it, or the address has a typo we can see and you can't — support can now mark your account confirmed directly, instead of you resending the link and hoping. Nothing changes for accounts that confirm the normal way.
- Security hardening on the admin console: email addresses are now escaped everywhere they are displayed, so an address containing HTML or quote characters can no longer affect the page it is shown on. Addresses containing an apostrophe (
o'brien@example.com) also no longer break the confirmation prompts on that screen.
Fixed Broken Example URLs In The API Reference And Dashboard
- Every example request on the API reference page, the dashboard's "run a transaction" quickstart, and the landing page's getting-started sample now points at a real, reachable address (
api.simitnow.com) instead of a path that no longer exists.
- The v2 tab's warning about being unreachable from outside is gone — v2 is reachable at
api.simitnow.com now, though it's still the newer, evolving surface, so v1 stays the recommended default for now.
Legacy SIMIT-API-KEY Header Removed
- Breaking change: the deprecated
SIMIT-API-KEY header name is no longer accepted. Every API request must use SIMITNOW-API-KEY.
- A request that still sends only
SIMIT-API-KEY now gets the same response as a request with no key header at all — your API key itself is unchanged, only the header name it must travel in.
- If your integration hasn't switched yet, update it before upgrading: change the header name from
SIMIT-API-KEY to SIMITNOW-API-KEY everywhere you call the API.
Status Page Now Has Its Own Address
- The Status link in the footer now takes you straight to status.simitnow.com instead of redirecting through
/status first.
Sitemap Now Matches the Domain You Visit
- sitemap.xml now lists URLs on whichever domain served the request — www.simitnow.com or simit.ddosoft.com — instead of always pointing search engines at one fixed address.
Status Page Footer Now Credits DDOSoft
- The footer on the status page now reads "© 2026 DDOSoft" instead of naming the product itself.
We're Now SimItNow
- SimIt is now SimItNow. You'll see the new name across the dashboard, docs, emails, and the status page — your account, API key, and everything you've built keep working exactly as before.
- No action needed: URLs, headers, and integrations are unchanged by this rename.
New API Key Header Name: SIMITNOW-API-KEY
- API requests can now send your key in a
SIMITNOW-API-KEY header, matching the SimItNow name.
- The existing
SIMIT-API-KEY header keeps working exactly as before — nothing you have running today needs to change, and your API key itself is unchanged.
SIMIT-API-KEY is now deprecated and will be removed in a future release, so use the new name in new code. If a request carries both headers, the value in SIMITNOW-API-KEY is the one used.
- The documentation and the sample commands on your dashboard now show the new header.
Favicon Now Shows Up Correctly in Browser Tabs and Search Results
- Fixed: the site icon was embedded directly in the page instead of served as a real file, so it never appeared in Google search results (a generic globe icon showed instead) and could be unreliable in some browsers.
- The icon is now served from a stable address (simit.ddosoft.com/favicon.ico) across every page, including the dashboard, docs, and admin area.
Stations Reconnecting After a CSMS Rejection Now Scatter Instead of Syncing Up
- When a CSMS rejects a station repeatedly (rate limiting, or a wrong credential/URL), SimItNow slows the retry rate down progressively — this part is unchanged, and a station never stops retrying.
- The maximum wait between attempts is now one minute, down from five.
- Fixed: once a station's wait reached the ceiling, every station in the same situation waited the exact same amount, every time — no variation. If you had many stations hit the same rejection together, they stayed locked in step, all retrying at the same instant indefinitely.
- Stations at the ceiling now wait a random amount between roughly 30 and 60 seconds on every attempt, so a large batch of simultaneously-rejected stations spreads its reconnect attempts out instead of hitting your CSMS all at once, over and over.
Fixed SoC Showing 0% at Session Start
- The very first meter reading of a session (sent the instant a transaction starts) now correctly reports the EV's configured starting battery level instead of always showing 0%.
Instant Start/Stop Meter Readings for Every Session
- OCPP 1.6 stations now report a meter reading (including SoC) at the exact moment a session stops, out of the box — no CSMS configuration needed. Previously the last reading a CSMS saw was whatever the periodic interval happened to catch, which could be stale by minutes.
- OCPP 2.0.1 stations now include a meter reading (energy, power, SoC) with every transaction start and stop event, not just periodic updates during the session.
Simplified High-Volume Plans Into One Enterprise Tier
- Scale+ and Performance are now a single "Enterprise" plan for 500+ chargepoints — reach out and we'll size a plan to your volume.
Updated Team and Load Plan Pricing
- Team is now $199/mo and Load is now $649/mo, reflecting the value of the concurrent simulator capacity included in each plan.
- Free and Dev pricing are unchanged.
Clearer Pricing — A Recommended Plan, Annual Savings, and a Way to Reach Us on Every Tier
- The Team plan is now marked as our recommended starting point for small teams.
- Every plan now has a clear next step: sign up instantly on Free, or reach out directly on any paid tier — previously only the free-trial offer had one.
- Dev, Team, and Load now show an annual price alongside the monthly one, saving about two months a year.
- Scale+ and Performance are now "Contact us" plans, so we can tailor pricing to your volume instead of a fixed number.
Support Tickets Now Send Email Notifications
- When you open a ticket or reply to one, our support team now gets an email right away instead of relying on someone noticing it in the admin panel.
- When support replies to your ticket, you now get an email too — no need to keep the dashboard open to know someone answered.
Support Ticket Messages Now Show When They Were Sent
- Every message in a support ticket thread — yours and ours — now shows the date and time it was sent, on both the dashboard ticket view and the support team's side.
The API Docs Now Open On The Version You Can Actually Call
- The API reference was opening on the v2 tab, but v2 is still in beta and is not published on the public API — so every example on that tab returned 404 to anyone who copied it. The docs now open on v1, which is the version to build against today.
- The v2 tab is still there and still marked Beta, now with a note explaining that those paths are not reachable from outside yet.
- The
?probe=1 connection check added in v0.14.0 is now documented on the v1 create endpoint as well, where callers can actually use it.
SimItNow Tells You Why A Station Will Not Connect
- When you add an OCPP backend or create a charging station, SimItNow now opens a real connection to your CSMS first and tells you straight away if it cannot get through — credentials refused, a path the server does not recognise, an unreachable host, an untrusted certificate, or an address that is not an OCPP endpoint at all.
- Each result is plain language with a suggested fix and a stage-by-stage breakdown showing exactly how far the connection got, instead of a status code you have to look up. Until now that reason was only visible in a station's log panel, after you already had a station quietly failing.
- Nothing is ever blocked. If your CSMS is not running yet, "Create anyway" is one click away, and your settings — including Basic auth credentials and client certificates — are carried across without ever appearing in the page.
- The same check is available to API users as
POST /api/v1/cs/probe, and as an optional ?probe=1 when creating a station. Bulk creation is untouched unless you ask for it.
- The onboarding checklist now marks "create a charging station" complete only once a station has genuinely connected, rather than as soon as one is created.
A Misconfigured Station No Longer Floods Your Logs
- When a CSMS rejects a station because its credentials are wrong or its URL points somewhere that does not exist, SimItNow used to retry roughly every ten seconds indefinitely — a single mistyped station could add thousands of identical failure lines a day and bury every other problem in your log.
- These rejections now slow down progressively, up to five minutes between attempts, the same way SimItNow already handles a CSMS that is busy or at capacity.
- Each attempt still reports exactly why it was refused, so you can see whether it is a credential or an address problem — you just see it at a readable rate instead of on repeat.
- Your station never stops trying. Once the CSMS side is put right — the station registered, or its credentials accepted — it reconnects on its own within five minutes, with nothing to restart. If the mistake is in the station's own address, that is still a delete and re-create, since a station's CSMS URL is fixed when you create it.
Your Simulators Start Reliably After An Update
- Fixed a problem where, right after a SimItNow update that changed how your simulator settings are stored, a service could fail to start and keep retrying instead of coming back. Your stations and vehicles stayed offline until someone intervened.
- Startup is now resilient: if SimItNow cannot load your saved simulators on its first attempt, it starts anyway and keeps working on it in the background, rather than restarting in a loop and serving nothing at all.
- No change to your simulators, settings, or API — this only affects how SimItNow behaves while starting up.
Stations That Refuse Remote Start
- New station setting
emulateRemoteStartRejected. Turn it on and the station answers Rejected to every remote start request your CSMS sends, so you can test how your own software handles a refusal.
- A refused request changes nothing on the station: the connector stays as it was, no session is opened, and any charging profile sent with the request is ignored. Send the same request to a normal station and it behaves exactly as before.
- Works for both OCPP 1.6 (RemoteStartTransaction) and OCPP 2.0.1 (RequestStartTransaction).
- This is different from the existing
emulateRemoteStartFailsToStartCharging setting, which accepts the request and then never starts charging. Use the new one for an outright refusal, the old one for a station that agrees and then does nothing.
- The setting is off by default and is remembered across restarts, like the rest of a station's configuration.
Stations Back Off When Your CSMS Accepts Them And Immediately Hangs Up
- If you configure more charging stations than your CSMS can hold at once, the ones that don't fit no longer retry every couple of seconds forever. SimItNow now recognises a connection that is accepted and then dropped before the station ever completes its boot sequence, and slows those attempts down progressively — the same way it already handled an outright "too many connections" rejection.
- This matters because many CSMS implementations enforce their connection limit by accepting the connection and closing it, rather than refusing it outright. Previously only the outright refusal was recognised, so the more common case ran unthrottled and generated a continuous stream of pointless connection attempts against your system.
- Stations that are working normally are unaffected: a disconnect after a successful boot still reconnects promptly, and a single dropped connection is still retried right away. Only a station stuck in a repeating, never-succeeding loop is slowed down.
- No station ever gives up — when capacity frees up on your CSMS, the waiting stations come back on their own.
- Your logs now say when a station is stuck in this loop, including how many times in a row it has happened, instead of only listing each individual disconnect.
Your Dashboard No Longer Undercounts Running Simulators
- Fixed a problem where simulators that were running normally — connected to your CSMS and exchanging messages — could stop being counted on your dashboard. The count could stay stuck at a handful while hundreds of stations were in fact live, making it look as though your simulators had vanished.
- The periodic maintenance that keeps your dashboard figures accurate now recovers from a temporary database or cache hiccup and carries on, instead of quietly stopping for the rest of the day. Previously a single momentary failure could leave the figures frozen until the service was restarted.
- Whenever SimItNow has to repair a simulator's bookkeeping, it now records it in the logs — so a discrepancy leaves a trace instead of passing unnoticed.
Charging Stations Now Back Off When Your CSMS Says "Too Many Connections"
- When your CSMS rejects connections because it has hit its own connection limit or is rate-limiting, charging stations now wait progressively longer between attempts instead of retrying every few seconds indefinitely. If your CSMS caps connections below the number of stations you have configured, the ones that can't get in no longer hammer it continuously.
- If your CSMS sends a
Retry-After instruction with the rejection, SimItNow now honours it.
- Stations still keep trying indefinitely and return to normal speed as soon as your CSMS accepts connections again — no station ever gives up permanently.
- Connection and login failures unrelated to rate limiting are unaffected and still retry promptly, so real configuration problems surface just as quickly as before.
Fixed Usage Counters Drifting Out of Sync With Your Actual Simulators
- Your charging station / EV usage counters (shown on your dashboard) could drift upward over time and never correct themselves — even after simulators were removed — sometimes showing a count higher than your account limit. Counters now always reflect your actual active simulator count.
- Improved stability when running large numbers of charging stations or EVs across multiple simulator instances — load is now shared more evenly between instances, reducing unexpected restarts.
Fixed Charge Points Getting Permanently Stuck After a Failed Create
- If creating a charging station or EV was interrupted partway through (a dropped connection, or a simulator instance restarting at just the wrong moment), that ID could become permanently unusable — every future attempt to create it failed with "already exists", and even "Clear Simulators" couldn't free it up. Interrupted creates are now cleaned up automatically, and a background check periodically releases any that still slip through.
EVs Now Recover Automatically After a Pod Crash
- EV simulators left behind by a replaced or crashed instance now come back online automatically on a running deployment, instead of staying offline until every instance restarted.
Fixed Charging Stations Not Recovering After a Deployment
- Charging station simulators left behind by a replaced instance now come back online correctly on the next deployment — previously they could stay permanently offline while EV simulators recovered normally.
Improved Connection Stability When Scaling Up
- Charging stations and EVs already connected no longer get disconnected and reassigned when a new simulator instance joins a running deployment — existing connections now stay put, and only newly added simulators pick up the new capacity.
Fixed Dashboard Quota Display
- The dashboard usage panel no longer flips your simulator limit back to 1 a few seconds after loading — the live counter now reads the same account data as the rest of the dashboard on deployments using the newer database-backed storage option.
- Simulator counts can no longer go negative after deleting simulators — the counter now stops at zero.
Fixed Dashboard Simulator List Not Updating
- Charging stations and electric vehicles you create now appear in your dashboard's simulator list right away, instead of being missing until you manually refreshed the page.
Fixed Homepage Simulator Count
- The "simulators registered" count on the homepage now reflects the actual number of configured charging stations and EVs across all accounts, instead of always showing zero on deployments using the newer database-backed storage option.
More Reliable Simulator Configuration Persistence
- Simulator configurations now persist more reliably across restarts, reducing the chance of losing a charging station or EV setup during maintenance or unexpected downtime.
Health Endpoint No Longer Requires an API Key
- The
/metrics endpoint no longer requires a SIMIT-API-KEY header, so orchestration platforms like Kubernetes can use it for readiness and liveness checks without extra configuration.
Getting Started Checklist and API Quickstart
- The dashboard now shows a Getting Started checklist that guides new users through the four setup steps: generating an API key, adding a CSMS backend, creating a charging station, and creating a virtual EV. The checklist disappears automatically once all steps are complete, or you can dismiss it manually.
- When a charging station exists, the Simulators card shows a collapsible API quickstart with a ready-to-run curl example for starting a transaction — pre-filled with your API key and station ID.
CSMS URL Validation When Adding a Backend
- When adding an OCPP backend, SimItNow now checks the URL and shows an amber warning if the scheme is
ws:// (unencrypted), the hostname cannot be resolved via DNS, or the hostname resolves to a private or loopback address that SimItNow's servers cannot reach.
- The backend is always saved regardless of warnings — you are not blocked from testing.
- The backend URL field now defaults to a
wss:// example to guide new users toward encrypted connections.
OCPP 2.0.1 Simulator Support Is Live
- Connect charging stations using the OCPP 2.0.1 protocol alongside existing 1.6 stations — specify
protocol: "ocpp2.0.1" at create time.
- Charge session lifecycle: BootNotification, Authorization, StatusNotification, TransactionEvent (Started/Updated/Ended), periodic meter reporting, and remote start/stop all work out of the box.
- Multi-EVSE and multi-connector charging scenarios are covered for both OCPP 1.6 and OCPP 2.0.1.
- Smart charging, device model, security, firmware/log, reservation, availability, and display-message handlers are wired with protocol-correct responses for CSMS testing.
Startup Recovery Progress
- The admin panel now shows saved simulator totals and per-key restore progress while Redis-backed CS/EV simulators are being recreated after restart.
Per-Type Simulator Clear Buttons
- The "Clear Simulators" button has been split into two separate buttons — Clear CS and Clear EV — placed directly on each usage counter. Click one to clear only that type, or both to clear all simulators.
OCPP 1.6 Behavioral Completeness
A landmark release bringing SimItNow'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; SimItNow 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.
Stability & Reliability
fix
General stability improvements and code quality hardening — fewer edge-case failures under load.
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.