e-Mobility Charging Station Simulator CLI
SkillCommunicationControl and monitor an OCPP charging station simulator via CLI. Use when users ask to manage charging stations, trigger OCPP messages from stations to the CSMS, start/stop the simulator or ATG, list stations or templates, or check simulator state.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the e-Mobility Charging Station Simulator CLI skill
What this skill tells your AI
The instructions your AI receives, as published by sap/e-mobility-charging-stations-simulator in ui/cli/skills/evse-simulator/SKILL.md and read by ahel’s review.
Status
!evse-cli --version 2>/dev/null || echo "Not installed — see ui/cli/README.md"
Configuration
The CLI connects to the simulator UI server via WebSocket (SRPC protocol).
Config file location: ${XDG_CONFIG_HOME:-$HOME/.config}/evse-cli/config.json
{
"uiServer": {
"host": "localhost",
"port": 8080,
"protocol": "ui",
"version": "0.0.1",
"authentication": {
"enabled": true,
"type": "protocol-basic-auth",
"username": "admin",
"password": "admin"
}
}
}
Precedence: defaults < config file < --config <path> < --server-url <url>.
Global Options
| Option | Description |
|---|---|
--json | Machine-readable JSON output |
-C, --config <path> | Path to configuration file |
--server-url <url> | WebSocket URL override |
NO_COLOR environment variable disables color output (see no-color.org).
Commands
Simulator
evse-cli simulator state # Get state, version, template statistics
evse-cli simulator start # Start the simulator
evse-cli simulator stop # Stop the simulator
Stations
evse-cli station list # List all stations
evse-cli station start [hashId...] # Start station(s)
evse-cli station stop [hashId...] # Stop station(s)
evse-cli station add -t <template> -n <count> # Add stations
evse-cli station add -t <template> -n 2 --auto-start # Add and auto-start
evse-cli station add -t <template> -n 1 --supervision-url ws://csms:8180/path
evse-cli station add -t <template> -n 1 --base-name MY-CS --fixed-name
evse-cli station add -t <template> -n 1 --name-suffix -EU # Suffix appended to derived id
evse-cli station add -t <template> -n 1 --ocpp-strict # Enable OCPP strict compliance
evse-cli station add -t <template> -n 1 --persistent-config # Enable persistent OCPP config
evse-cli station add -t <template> -n 1 --supervision-user alice --supervision-password s3cret
evse-cli station delete [hashId...] # Delete station(s)
evse-cli station delete --delete-config [hashId...] # Delete with config files
Templates
evse-cli template list # List available station templates
Connections
evse-cli connection open [hashId...] # Open WebSocket to CSMS
evse-cli connection close [hashId...] # Close WebSocket to CSMS
Connectors
evse-cli connector lock --connector-id <id> [hashId...] # Lock connector
evse-cli connector unlock --connector-id <id> [hashId...] # Unlock connector
ATG (Automatic Transaction Generator)
evse-cli atg start [hashId...] # Start ATG on all connectors
evse-cli atg start --connector-ids 1,2 [hashId...] # Start on specific connectors
evse-cli atg stop [hashId...] # Stop ATG on all connectors
evse-cli atg stop --connector-ids 1,2 [hashId...] # Stop on specific connectors
Transactions
evse-cli transaction start --connector-id <id> --id-tag <tag> [--evse-id <id>] [hashId...]
evse-cli transaction stop --transaction-id <id> [--connector-id <id>] [hashId...]
Both commands auto-detect the station's OCPP version and adapt the procedure and payload. The -p option uses the OCPP 1.6 procedure; for 2.0.x raw payloads use ocpp transaction-event -p.
OCPP Messages
Request station(s) to send OCPP messages to the CSMS:
evse-cli ocpp heartbeat [hashId...]
evse-cli ocpp boot-notification [hashId...]
evse-cli ocpp authorize --id-tag <tag> [hashId...]
evse-cli ocpp status-notification --connector-id <id> [--error-code <code>] --status <status> [--evse-id <id>] [hashId...]
evse-cli ocpp meter-values --connector-id <id> [hashId...] # OCPP 1.6
evse-cli ocpp meter-values --evse-id <id> [hashId...] # OCPP 2.0.x
evse-cli ocpp data-transfer [--vendor-id <id>] [--message-id <id>] [--data <data>] [hashId...]
meter-values requires --connector-id for OCPP 1.6 and --evse-id for OCPP 2.0.x.
Other OCPP commands (no extra options): diagnostics-status-notification, firmware-status-notification, get-15118-ev-certificate, get-certificate-status, log-status-notification, notify-customer-information, notify-report, security-event-notification, sign-certificate, transaction-event.
All OCPP and transaction commands accept -p, --payload <json|@file|-> for custom JSON payloads:
evse-cli ocpp boot-notification -p '{"reason":"PowerUp"}' [hashId...] # Inline
evse-cli ocpp boot-notification -p @payload.json [hashId...] # From file
cat payload.json | evse-cli ocpp boot-notification -p - [hashId...] # From stdin
For typed-option commands (authorize, meter-values, status-notification, transaction start|stop), -p conflicts with typed options and the two cannot be combined. For data-transfer, command options merge with -p and typed options take precedence over -p fields.
Version-aware commands
Commands with typed options (authorize, meter-values, status-notification, transaction start, transaction stop) auto-detect the target station's OCPP version and build the appropriate payload. Key differences:
--id-tag: sent asidTag(1.6) or wrapped asidToken(2.0.x)--error-code: required forstatus-notificationon 1.6 only--evse-id: OCPP 2.0.x only; required formeter-values--connector-id: OCPP 1.6 formeter-values; required fortransaction stopon 2.0.x--transaction-id: integer (1.6) or UUID string (2.0.x)
When -p is provided, version detection is skipped and the raw payload is passed through.
Supervision
evse-cli supervision set-url --supervision-url <url> [--supervision-user <user>] [--supervision-password <password>] [hashId...]
Performance
evse-cli performance stats # Get performance statistics
Output Modes
- Human (default): borderless tables, status icons, colored output
- JSON (
--json): structured JSON on stdout, parseable by scripts
Exit Codes
| Code | Meaning |
|---|---|
0 | Success |
1 | Error (connection, server, auth) |
130 | Interrupted (Ctrl+C) |
143 | Terminated (SIGTERM) |
hashId Convention
Omitting [hashId...] applies the command to ALL stations. Pass one or more hash IDs to target specific stations. Hash IDs support prefix matching — a short unambiguous prefix works in place of the full ID. Get hash IDs from evse-cli station list or evse-cli --json station list.
Common Workflows
Start simulator and check state
evse-cli simulator start
evse-cli simulator state
Add stations from template and start ATG
evse-cli template list
evse-cli station add -t keba-ocpp2.station-template -n 3 --auto-start
evse-cli atg start
Request all stations to send OCPP Heartbeat
evse-cli ocpp heartbeat
Change supervision URL and reconnect
evse-cli station stop <hashId>
evse-cli supervision set-url --supervision-url ws://new-csms:8180/path <hashId>
evse-cli station start <hashId>
Signals
- GitHub stars
- 225
- Forks
- 96
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
evse-simulator- Source
- github.com/sap/e-mobility-charging-stations-simulator