-
Chargers Online
-
In Use (active sessions)
- kW
Power In Use (live draw)
- kWh
Energy Today
Sites
Fleet Availability (90 days)
Active Sessions
Remote Start
Remote Stop
System (DB overrides config.json)

Essential boot settings (mysql, ports, adminSecret) remain in config.json.

CSMS pokes only chargers that have gone quiet (no Heartbeat for > N s), with a per-charger cooldown. 0 disables it. Floored at 15s.

SoC-aware load balancing
When capacity is shared, favour vehicles below the SoC threshold and taper those above it. Every connected vehicle still keeps a 6 A minimum. Only applies where the charger reports State of Charge.
Dynamic power sharing: when on, idle/suspended chargers release all but a 6 A reserve to actively-charging chargers, and contended chargers ramp up over a redistribution tick. Per-charger priority weight applies regardless. Default off keeps the legacy event-driven behaviour.
Demand-following: under contention, trim each charger's offer toward its actual draw + one step and re-pool the freed capacity to chargers still ramping (and reclaim on taper). Downward-only — never offers above the capacity limit. Default off; validate on the DC charger test.
Session limit ownership: when on, power sharing sends its allocation as the TxProfile of each connector with a live transaction, replacing the remote-start profile and capped at the session's permit. When off, it keeps its standing TxDefaultProfile and re-sends each session's own TxProfile at the lower of its cap and the allocation. Default off.
Per-connector sharing: allocate and send a SetChargingProfile to EACH active connector of a multi-connector charger (almost always DC) independently, instead of one charge-point-wide limit. Σ(connectors) stays within the charge point's max power (optionally each connector capped by its own rating). Default off; validate on real DC hardware. When off, multi-connector chargers receive a single charge-point-wide (connector 0) limit.
Uses ISO 15118 NotifyEVChargingNeeds (battery capacity, target SoC, departure time) to cap a charger DOWN to the power it needs to hit its target by departure (+15% margin), freeing capacity for contended chargers; releases to the 6A floor once the EV reaches its target. Downward-only — never above the limit. Default off; validate on the DC charger test.
At session end, send ClearChargingProfile for that connector to wipe the custom limits this CSMS pushed (power sharing / pacing), restoring the charger to its standard state so the next session never inherits a stale limit. Connector-scoped (won't disturb another active connector). Default off; validate on the DC charger test.
Profile emission churn guard: a recomputed limit within this many watts of the last sent profile is not re-sent. Drift accumulates against the last sent value, so real changes still go out.
OCPI credential routing rules: when on, per-partner routing rules (eMAID + RFID; exact/glob/regex, configured on each partner's Routing tab) resolve the owning partner up front and skip the sequential partner authorize fan-out. Supersedes the legacy eMAID issuer-prefix routing. Default off — with no custom rules, behaviour matches the legacy 1:1 prefix routing.
Legacy 1:1 eMAID issuer-prefix routing. Ignored when the credential routing rules above are enabled.
Master switch for autocharge. A plug-in is auto-started only when this is on AND the vehicle (EVCCID/eMAID) is enrolled with autocharge enabled.
When a session stops on a site with client paid-access hours configured, notify the customer (webhook / SMS / email fallback) to move their vehicle, including the access window. Only fires for sessions with a linked End User or notification override.
On sites with an OCPI blackout schedule: warn customers with a live session 15 minutes before a blackout starts, and again when it begins. Webhook / SMS / email fallback; once per session per event.
For chargers that authorize a plug-in locally (cached auth / autocharge / local list) and send Started(triggerReason=Authorized) with no preceding Authorize or idToken (e.g. Kempower). When on, such a start is trusted and a session is formed. Trade-off: weak credential attribution — enable only where the charger is the authorization authority.
Kempower-only. A plug-first station starts the transaction at cable-plug and re-presents the vehicle's MacAddress/EVCCID — not the operator's idTag — so a manual/OCPI/webhook remote start can't authorize it and the charge ends DeAuthorized at 0 Wh. When on, an operator remote start on a Kempower binds to the connector so the next plug-first Authorize there is Accepted. Unknown plug-ins with no pending operator start still get Invalid.
Only acts when the station accepts a start but echoes an already-ended transaction (the latched bay). Default Off. Validate on a bench charger before enabling.
When on, destructive routes (/remote/reset|configuration|force-stop|force-end-session, /firmware*) require the API key to hold the specific scope (remote:control / firmware:write); admin is a superset. Provision each key's scopes BEFORE enabling — legacy api keys lose destructive access. Off = legacy role-based gating (no change).
Tokens: DD MM YYYY HH mm ss
Removes the "API key required" watermark from the three CartoDB basemaps. Get one free at carto.com/basemaps/apikey. OpenStreetMap and OpenTopoMap need no key.
Requests per minute per IP. Blank = 60; 0 = no limit. Applies without a restart.
The public address printed in every bay-code QR. Admin only.
Client-frontend brand for bay codes whose site sets none

Billing & Display
How recurring third-party (roaming) monthly fees are counted.
Each charger must also enable cost display individually.
OCPP 1.6 DataTransfer vendorId preset
Placeholders: {cost}, {costCents}, {energyKwh}, {unitRate}, {unitRateSuffix}, {chargePointId}, {transactionId}

Charger screen messages

Mid-session price-change notice
On chargers without live cost display, warn at session start when a time-of-use rate boundary lies ahead.
Only boundaries within this window after session start trigger the notice.
Vendor config groups can override this per vendor.
Placeholders: {bayCodeUrl} (recommended: the connector's printed bay code), {chargePointId}, {connectorId}, {clientFrontendBase}. Blank = no plug-in QR. The old {clientFrontendBase}/charge/… default is read as {bayCodeUrl}: the client frontend has no /charge/ page.

Logging & Debug
Comma-separated host allowlist for UpdateFirmware download URLs. Blank = derive from the firmware base URL.
Comma-separated ISO-15118 DataTransfer vendorId allowlist for Plug&Charge. Blank = allow all (current behaviour). Set it to restrict PnC authorization/autocharge to known vendors.
The default for chargers with no per-charger override (set per charger on the Charge Point edit screen). HTTP/FTP upload to this CSMS (file appears in the request row); FTP suits OCPP 1.6 chargers that only upload via FTP (port/PASV range live in config.json; switching needs an OCPP restart). External sends a URL to the charger verbatim — the file lands on a third-party server and is NOT retrievable here; the External URL is configured per charger.
This CSMS's public http(s) origin for the built-in HTTP collector. Blank = derive from the charger's connection (its host and port are honoured — useful behind a firewall/port-forward).
Host (and optional port) of the FTP collector — may differ from the HTTP host. Blank = the charger's connect host with the FTP listener port from config.json. The port in this URL is honoured when set.

Colour bands for the availability day-strips on the dashboard and site cards. A day is green at or above the green target, orange at or above the orange target, and red below it. Each cell is also shaded from the bottom to show that day's utilisation.

Applies only to chargers that were connected when the service stopped, and only while they are still missing. Maintenance minutes are excluded from availability, the same as a scheduled out-of-service window.
SMS Gateway Providers

Configure ordered SMS gateway providers for failover. Providers are tried in order; first successful send wins.

Tip: click Edit to open provider settings in a modal.

Webhook Auth Providers

Configure webhook endpoints for RFID/credential authorization. Providers are tried based on the selected policy.

Dashboard display

Settings for the public dashboard at /dashboard

EV Screens (ESP32 Displays)

Manage charger-mounted ESP32 display screens. Pending screens show an eight-character hex registration code on the screen itself: enter it below (either case) to adopt and link to a charger. A screen bound to its device key shows its code only on the screen, never here.

Adopt a Screen
Site Screen Configuration

WiFi credentials, API keys, and URLs pushed to screens at a site.

All DB Settings

Edit any key-value setting. system_settings and dashboard_settings combined.

SourceKeyValueActions
Charger Boot Configuration

OCPP configuration keys pushed to chargers on connect. Group configs by charger type (e.g. Default, Schneider, Dahua). Use {brand_name}, {site_name}, {charge_point_id} as placeholders.

Vendor Config Groups

Per-vendor bundles of charger display and rate configuration, assigned per charger on the charger's edit form. Resolution order: per-charger override (mode enabled) → vendor group (mode inherit) → system defaults → built-in defaults. Each capability picks its own delivery: auto (protocol default), datatransfer (OCPP 1.6 vendor DataTransfer), setdisplaymessage (OCPP 2.x), or none. Rate-via-SetConfiguration is independent of the display, for vendors whose screens read pricing from a configuration key.

Dashboard Configs (Multi-Brand)

Configure multiple national dashboards. Each has a URL like /dashboard/slug.

End Users
End Users
–
Charge Credentials
–
Unassigned Credentials ›
–
Auto Charge
Enrolled Credentials

Every credential that auto-starts a session on plug-in (autocharge enabled). Unassigned = not linked to any End User profile — it still auto-starts, but appears on no profile page; use Assign to attach it.

Sightings Log

Every plug-in that reported an EVCCID/eMAID, with the autocharge decision. Started = we auto-started it; Observed = the charger authorised the vehicle itself. Use “Enroll” on an unenrolled sighting to add it as an autocharge credential.

Banned Credentials
Power Limit Hierarchy (Sites)

Site → Meter → Cabinet group → Charger group → Charger. Limits flow from top.

Add Site
Power Sharing & Metering Hierarchy

Top-down power stack: grid limit → site meter (live import) → cabinet → charger group → charge point → connector. Per charger: Capacity (nameplate rating) · Offered (power currently granted — the live load-management allocation, or full capacity when nothing is throttling) · Draw (actual consumption). The gap Offered−Draw is reclaimable headroom that can be redistributed. Chargers throttled by load management (Suspended EVSE) are flagged.

Offered — power granted to the charger (live allocation, or full capacity when un-throttled) Actual draw ↻ reclaimable — Offered − Draw: offered but unused, redistributable (N−1) Throttled Load-managed (SuspendedEVSE) Per-site bar — each coloured segment is a charger's live allocation against the grid limit (not nameplate sum); the matching dot sits beside that charger's name. Colours are per-site (reused across sites). Units: kW, and A/phase where voltage & phases are known.

Loading hierarchy…

Charger Groups

Power sharing and map overlay. Assign chargers via charge point edit.

API Keys

DB-backed keys for API auth. Store new keys securely; they are shown only once.

OCPI Admin Suite

Single control centre for OCPI settings, partners, bookings, payment terminals, attempts, and diagnostics.

OCPI Settings (Routing Identity)
Your OCPI base URL (e.g. https://cms.example.com)
Writes OCPI request/response protocol logs to logs/ocpi/.
Stops a partner-started session before its cost exceeds the rate card's OCPI pre-authorize amount (set per rate card under Rate Cards). Protects revenue when the payment terminal holds a fixed amount — e.g. Nayax. Sessions on rate cards without a pre-authorize amount are unaffected.
OCPI Partner Liveness & Sync Defaults (Global)

Periodic GET /versions probe per OCPI HubClientInfo "still alive" pattern. Per-partner values override these defaults.

Loading liveness status…
OCPI spec recommends starting at 300 (5 min).

CDR resend rides on the probe: a partner's undelivered CDRs are re-sent when its probe comes back CONNECTED, when you ping it by hand, or on the floor below while it stays CONNECTED. Turning liveness off turns automatic resend off with it.

Between two automatic sweeps of a partner that stayed CONNECTED.
Past this only a reconnect or a manual ping re-arms the partner.
Older undelivered CDRs are left for an operator.
Re-pushes all Locations + Tariffs to every push partner. 0 = disabled.
Delete cached eMSP tokens this many days after they become invalid (revoked by push or dropped from a pull sync). Valid tokens are never deleted. 0 = keep forever.
How long per-token audit entries (push/pull/sweep/prune actions) are kept. 0 = keep forever.
Fallback EVSE-status sync: re-PUTs Locations (live EVSE statuses) to push partners, healing missed pushes and partner-side staleness. 0 = disabled; minimum effective interval is 60 s (values 1-59 are rounded up); 300 recommended. (Connector ocpp_status has its own resync below.)
Skip an EVSE/connector status PATCH when the partner already acked the same status. Stops a same-status StatusNotification burst (e.g. Preparing→Charging×3, all → CHARGING) from emitting identical PATCHes that partners like Nayax debounce and drop. Re-assertions (offline, reconnect, resync) always send. Recommended ON with a non-zero resync interval.
Min spacing between per-connector ocpp_status pushes (nayax_ptp only). Bursts coalesce to the latest status, flushed once per window, so Nayax can process each update. 0 = disabled; 10 recommended.
Periodic heartbeat that re-asserts every online connector's ocpp_status to nayax_ptp partners — heals updates Nayax acked but silently dropped (which drift detection can't see). 0 = disabled; min effective 60 s; 120 recommended.
Min seconds between Session cost pushes during charging (event-driven; bounded below by the charger's metering interval).
After a partner START_SESSION is accepted, how long to wait for the driver to plug in before pushing the session as INVALID (releases the partner's bay). Set above your slowest charger's ConnectionTimeOut.
Delete the record of a partner-started session that stayed PENDING or ended INVALID this many days after its last change. Partners read these back with GET /sessions until then. 0 = keep forever.
OCPI Profile Defaults (Global)

Applied when site or charge point fields are blank. Charge point overrides site; site overrides global.

Operator BusinessDetails contact, advertised in Credentials & Location.operator.
Optional sub-operator advertised in Location.suboperator.
Human-readable tariff page advertised in Tariff.tariff_alt_url.
OCPI Partners

Hub-reported connection status of OCPI parties (read-only; populated when a hub pushes ClientInfo to our HubClientInfo receiver).

OCPI Token Cache (Read-Only)

CPO-side cache of tokens received from eMSPs, used by the cache-first authorization branch. UIDs and contract IDs are masked.

Publishing settings

One amenity=charging_station node per publicly accessible live site. Writes are refused unless publishing is enabled and an access token has been obtained. The live map additionally needs the explicit confirmation below.

Blank = default (sweep hourly, comments every 6 h), 0 = off. Sweep: otherwise 5 to 1440. Comments: 0 or 15–10080. Price changes publish within a minute unless the sweep is 0, which turns all publishing off.
Linked from every changeset's description tag. Must be a page on wiki.openstreetmap.org.
OpenStreetMap account
Not connected.
Optional. Use this only when you already hold a bearer token. Otherwise leave it blank and use Set up connection. Write-only: never shown again once saved.
Status
Loading...

Publishable sites and every site we have ever written. Select a site to preview what would be written, change its OpenStreetMap settings, adopt an existing node, or read mappers' comments.

SiteStatusOSM objectVersionLast publishedCommentsActions
OpenADR (Demand Response)

Manage upstream VTN connections and their virtual-VENs. All OpenADR configuration lives here. During a demand-response event, power sharing continues at a reduced total capacity.

Loading…
Third Parties

For accounting: link charge points to third parties. Mark charge points as Third Party and assign.

Rate Cards

Tariff cards for pricing: flat, time-of-use, quantity tiers, composite logic, or external API. Assign to OCPI partners or use from webhook.

Admin Users

Create and manage admin users. Admin role required.

Firmware Updates

OCPP 2.0.1 UpdateFirmware. Add images with URL to firmware binary.

Add Firmware Image

Trigger Update

Charge Points

Manage chargers. Set type (AC/DC), max power, and pricing.

Map View

Chargers and groups. Terrain view; all chargers fit in viewport.

Sessions

Authorisation attempts across OCPP, OCPI, API, and admin flows. Click a business transaction ID for the full audit trail and linked sessions.

Filters
Default is All. Type/select and press Enter to add.
Loading authorisation audit…

Alerts

Network Alerts

Active charger errors across the fleet and recent fault history.

Active Errors
Charge PointConnectorSiteError CodeDetailsVendor CodeStatusSinceActions
Recent Fault History
SeverityCharge PointConnectorMessageCountTimeStatusActions
OpenADR Demand-Response Events
EventDetailTime

Error Code Knowledge Base

Vendor/model globs scope an entry to matching chargers; the error-code glob matches the charger's vendor error code first, then the generic OCPP error code. Troubleshooting shows on the Alerts and Network Alerts pages.

Availability Schedules (OOO/OOS)

Time-bound out-of-order or out-of-service for chargers. Times are in the selected timezone.

Commissions

Two independent commission streams — the same charger and session can contribute to both: third_party_commission (charger-host clip charge + monthly fees) and payment_gateway_fee (the OCPI partner's cut as payment processor, from commission rate cards).

Third-party commission (charger hosts)
Payment gateway fees (OCPI partners) Per-partner totals for the month selected above — the partner's cut per its commission rate card (gateway %, flagfall, per-kWh/idle), summed from completed OCPI sessions.
Third-party commission report
Run the report to view commission totals.

Email Templates

Customize all outbound email templates and the PDF invoice HTML template. Select a template pack, then edit individual templates.

Template Packs

SMS Templates

Customize SMS message templates for notifications. Plain text only.

Template Types

Charge Detail Records (CDRs)

Browse CDRs for billing and audit purposes. CDRs are created for every session.

Job Queues

Monitor background job queues (email, SMS, OCPI callbacks, webhooks).

Queue Jobs
IDNameStatusAttemptsCreatedData

Debug Log

Live log output. Requires admin or diagnostic role.

OCPP Strict Exception Metrics
Loading...
ProfileActionAllowedExceptionBlocked
Compliance Snapshot Operations
Loading snapshot health...
FilenameModifiedSizeAction
Compliance Audit Trail
Loading compliance audit...
TimeActionStatusUserSource IPDetails
OCPP Packet Logs
Loading OCPP logs...
TimeDirectionCharge PointMessageFile
OCPI Protocol Logs
Loading OCPI logs...
TimePhaseDirMethodPathStatusRequest IDSource IPBody
Live log stream