Lint READMEs
[e-mobility-charging-stations-simulator.git] / README.md
CommitLineData
d6b76da3 1<!-- markdownlint-disable-file MD033 MD024 -->
1ea2264a 2# [e-mobility charging stations simulator](https://github.com/sap/e-mobility-charging-stations-simulator)
7dde0b73 3
0a3d08ef
SW
4[![REUSE status](https://api.reuse.software/badge/github.com/SAP/e-mobility-charging-stations-simulator)](https://api.reuse.software/info/github.com/SAP/e-mobility-charging-stations-simulator)
5
7dde0b73
JB
6## Summary
7
ccb1d6e9 8Simple [node.js](https://nodejs.org/) software to simulate a set of charging stations based on the OCPP-J 1.6 protocol as part of SAP e-Mobility solution.
7dde0b73 9
696ce53a
JB
10## Prerequisites
11
007ee642
JB
12Install the [node.js](https://nodejs.org/) LTS runtime environment:
13
696ce53a
JB
14### Windows
15
e7aeea18 16- [Chocolatey](https://chocolatey.org/):
696ce53a
JB
17
18```powershell
19choco install -y nodejs-lts
20```
21
22### MacOSX
23
e7aeea18 24- [Homebrew](https://brew.sh/):
696ce53a
JB
25
26```shell
8f3d04b0 27brew install node@16
696ce53a
JB
28```
29
d6b76da3 30### GNU/Linux
511780c3 31
7e901376 32- [NodeSource](https://github.com/nodesource/distributions) Node.js Binary Distributions for version >= 16.X
511780c3 33
007ee642
JB
34## Installation
35
36In the repository root, run the following command:
37
38```shell
39npm install
40```
41
42## Initial configuration
43
db70b600
JB
44Copy the configuration template file [src/assets/config-template.json](src/assets/config-template.json) to [src/assets/config.json](src/assets/config.json).
45Copy the authorization RFID tags template file [src/assets/authorization-tags-template.json](src/assets/authorization-tags-template.json) to [src/assets/authorization-tags.json](src/assets/authorization-tags.json).
46
47Tweak them to your needs by following the section [configuration files syntax](README.md#configuration-files-syntax).
007ee642
JB
48
49## Start
50
51To start the program, run: `npm start`.
52
4e3ff94d 53## Start Web UI
007ee642 54
b8cc885d
JB
55See Web UI [README.md](src/ui/web/README.md) for more information.
56
4d3821a2 57## Configuration files syntax
2c28fc83 58
e7aeea18 59All configuration files are in the JSON standard format.
2c28fc83 60
ff82dc5f 61**Configuration files locations**:
2c28fc83 62
170bec53 63- charging stations simulator configuration: [src/assets/config.json](src/assets/config.json);
1816f743 64- charging station configuration templates: [src/assets/station-templates](src/assets/station-templates);
1c51fd1d 65- charging station configurations: [dist/assets/configurations](dist/assets/configurations);
7f818162 66- charging station RFID tags lists: [src/assets](src/assets).
2c28fc83 67
1816f743
JB
68The charging stations simulator's configuration parameters must be within the `src/assets/config.json` file. A charging station simulator configuration template file is available at [src/assets/config-template.json](src/assets/config-template.json).
69
70All charging station configuration templates are in the directory [src/assets/station-templates](src/assets/station-templates).
71
72A list of RFID tags must be defined for the automatic transaction generator with a default location and name: `src/assets/authorization-tags.json`. A template file is available at [src/assets/authorization-tags-template.json](src/assets/authorization-tags-template.json).
73
74**Configuration files hierarchy and priority**:
75
1c51fd1d 761. charging station configuration: [dist/assets/configurations](dist/assets/configurations);
1816f743 772. charging station configuration template: [src/assets/station-templates](src/assets/station-templates);
170bec53 783. charging stations simulator configuration: [src/assets/config.json](src/assets/config.json).
511780c3 79
e7aeea18 80The charging stations simulator have an automatic configuration files reload feature at change for:
511780c3 81
170bec53 82- charging stations simulator configuration;
1816f743 83- charging station configuration templates;
170bec53 84- charging station authorization RFID tags lists.
2c28fc83 85
c645fe94 86But the modifications to test have to be done to the files in the build target directory [dist/assets](dist/assets). Once the modifications are finished, they have to be reported or copied to the matching files in the build source directory [src/assets](src/assets) to ensure they will be taken into account at next build.
e7aeea18 87
170bec53 88### Charging stations simulator configuration
2c28fc83 89
b1d6e944 90**src/assets/config.json**:
2c28fc83 91
0191e17a
JB
92| Key | Value(s) | Default Value | Value type | Description |
93| -------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
94| supervisionUrls | | [] | string \| string[] | string or array of global connection URIs to OCPP-J servers |
95| supervisionUrlDistribution | round-robin/random/charging-station-affinity | charging-station-affinity | boolean | supervision urls distribution policy to simulated charging stations |
96| logStatisticsInterval | | 60 | integer | seconds between charging stations statistics output in the logs |
97| logConsole | true/false | false | boolean | output logs on the console |
98| logFormat | | simple | string | winston log format |
99| logRotate | true/false | true | boolean | enable daily log files rotation |
100| logMaxFiles | | 7 | integer | maximum number of log files to keep |
101| logLevel | emerg/alert/crit/error/warning/notice/info/debug | info | string | winston logging level |
102| logFile | | combined.log | string | log file relative path |
103| logErrorFile | | error.log | string | error log file relative path |
104| worker | | {<br />"processType": "workerSet",<br />"startDelay": 500,<br />"elementStartDelay": 0,<br />"elementsPerWorker": 1,<br />"poolMinSize": 4,<br />"poolMaxSize": 16,<br />"poolStrategy": "ROUND_ROBIN"<br />} | {<br />processType: WorkerProcessType;<br />startDelay: number;<br />elementStartDelay: number;<br />elementsPerWorker: number;<br />poolMinSize: number;<br />poolMaxSize: number;<br />poolStrategy: WorkerChoiceStrategy;<br />} | Worker configuration section:<br />- processType: worker threads process type (workerSet/staticPool/dynamicPool)<br />- startDelay: milliseconds to wait at worker threads startup (only for workerSet threads process type)<br />- elementStartDelay: milliseconds to wait at charging station startup<br />- elementsPerWorker: number of charging stations per worker threads for the `workerSet` process type<br />- poolMinSize: worker threads pool minimum number of threads</br >- poolMaxSize: worker threads pool maximum number of threads<br />- poolStrategy: worker threads pool [poolifier](https://github.com/poolifier/poolifier) worker choice strategy |
d6b76da3 105| uiServer | | {<br />"enabled": true,<br />"type": "ws",<br />"options": {<br />"host": "localhost",<br />"port": 8080<br />}<br />} | {<br />enabled: boolean;<br />type: ApplicationProtocol;<br />options: ServerOptions;<br />authentication: {<br />enabled: boolean;<br />type: AuthenticationType;<br />username: string;<br />password: string;<br />}<br />} | UI server configuration section |
0191e17a
JB
106| performanceStorage | | {<br />"enabled": false,<br />"type": "jsonfile",<br />"file:///performanceRecords.json"<br />} | {<br />enabled: boolean;<br />type: string;<br />URI: string;<br />}<br />where type can be 'jsonfile' or 'mongodb' | performance storage configuration section |
107| stationTemplateUrls | | {}[] | {<br />file: string;<br />numberOfStations: number;<br />}[] | array of charging station configuration templates URIs configuration section (charging station configuration template file name and number of stations) |
e7aeea18 108
d6b76da3 109#### Worker process model
a6b3c6c3
JB
110
111- **workerSet**:
4c6ed1d7 112 Worker set executing each a static number (elementsPerWorker) of simulated charging stations from the total
a6b3c6c3
JB
113
114- **staticPool**:
e7aeea18 115 Statically sized worker pool executing a static total number of simulated charging stations
a6b3c6c3
JB
116
117- **dynamicPool**:
e7aeea18 118 Dynamically sized worker pool executing a static total number of simulated charging stations
a6b3c6c3 119
1816f743
JB
120### Charging station configuration template
121
afccb423 122**src/assets/station-templates/\<name\>.json**:
1816f743 123
65554cc3
JB
124| Key | Value(s) | Default Value | Value type | Description |
125| ---------------------------------- | ---------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
126| supervisionUrls | | '' | string \| string[] | string or array of connection URIs to OCPP-J servers |
127| supervisionUser | | '' | string | basic HTTP authentication user to OCPP-J server |
128| supervisionPassword | | '' | string | basic HTTP authentication password to OCPP-J server |
129| supervisionUrlOcppConfiguration | true/false | false | boolean | allow supervision URL configuration via a vendor OCPP parameter key |
130| supervisionUrlOcppKey | | 'ConnectionUrl' | string | the vendor string that will be used as a vendor OCPP parameter key to set the supervision URL |
131| ocppVersion | 1.6 | 1.6 | string | OCPP version |
132| ocppProtocol | json | json | string | OCPP protocol |
133| ocppStrictCompliance | true/false | false | boolean | strict adherence to the OCPP version and protocol specifications |
134| ocppPersistentConfiguration | true/false | true | boolean | enable persistent OCPP parameters storage by charging stations 'hashId'. The persistency is ensured by the charging stations configuration files in dist/assets/configurations |
135| stationInfoPersistentConfiguration | true/false | true | boolean | enable persistent station information and specifications storage by charging stations 'hashId'. The persistency is ensured by the charging stations configuration files in dist/assets/configurations |
136| wsOptions | | {} | ClientOptions & ClientRequestArgs | [ws](https://github.com/websockets/ws) and node.js [http](https://nodejs.org/api/http.html) clients options intersection |
137| authorizationFile | | '' | string | RFID tags list file relative to src/assets path |
138| baseName | | '' | string | base name to build charging stations id |
139| nameSuffix | | '' | string | name suffix to build charging stations id |
140| fixedName | true/false | false | boolean | use the baseName as the charging stations unique name |
141| chargePointModel | | '' | string | charging stations model |
142| chargePointVendor | | '' | string | charging stations vendor |
143| chargePointSerialNumberPrefix | | '' | string | charge point serial number prefix |
144| chargeBoxSerialNumberPrefix | | '' | string | charge box serial number prefix (deprecated in OCPP 1.6) |
145| firmwareVersion | | '' | string | charging stations firmware version |
146| power | | | float \| float[] | charging stations maximum power value(s) |
147| powerSharedByConnectors | true/false | false | boolean | charging stations power shared by its connectors |
148| powerUnit | W/kW | W | string | charging stations power unit |
149| currentOutType | AC/DC | AC | string | charging stations current out type |
150| voltageOut | | AC:230/DC:400 | integer | charging stations voltage out |
151| numberOfPhases | 0/1/3 | AC:3/DC:0 | integer | charging stations number of phase(s) |
152| numberOfConnectors | | | integer \| integer[] | charging stations number of connector(s) |
153| useConnectorId0 | true/false | true | boolean | use connector id 0 definition from the charging station configuration template |
154| randomConnectors | true/false | false | boolean | randomize runtime connector id affectation from the connector id definition in charging station configuration template |
155| resetTime | | 60 | integer | seconds to wait before the charging stations come back at reset |
156| autoRegister | true/false | false | boolean | set charging stations as registered at boot notification for testing purpose |
157| autoReconnectMaxRetries | | -1 (unlimited) | integer | connection retries to the OCPP-J server |
158| reconnectExponentialDelay | true/false | false | boolean | connection delay retry to the OCPP-J server |
159| registrationMaxRetries | | -1 (unlimited) | integer | charging stations boot notification retries |
160| amperageLimitationOcppKey | | undefined | string | charging stations OCPP parameter key used to set the amperage limit, per phase for each connector on AC and global for DC |
161| amperageLimitationUnit | A/cA/dA/mA | A | string | charging stations amperage limit unit |
162| enableStatistics | true/false | true | boolean | enable charging stations statistics |
03ebf4c1
JB
163| mustAuthorizeAtRemoteStart | true/false | true | boolean | always send authorize at remote start transaction when AuthorizeRemoteTxRequests is enabled |
164| payloadSchemaValidation | true/false | true | boolean | validate OCPP commands PDU against [OCA](https://www.openchargealliance.org/) JSON schemas |
65554cc3
JB
165| beginEndMeterValues | true/false | false | boolean | enable Transaction.{Begin,End} MeterValues |
166| outOfOrderEndMeterValues | true/false | false | boolean | send Transaction.End MeterValues out of order. Need to relax OCPP specifications strict compliance ('ocppStrictCompliance' parameter) |
167| meteringPerTransaction | true/false | true | boolean | enable metering history on a per transaction basis |
168| transactionDataMeterValues | true/false | false | boolean | enable transaction data MeterValues at stop transaction |
169| mainVoltageMeterValues | true/false | true | boolean | include charging stations main voltage MeterValues on three phased charging stations |
170| phaseLineToLineVoltageMeterValues | true/false | true | boolean | include charging stations line to line voltage MeterValues on three phased charging stations |
171| customValueLimitationMeterValues | true/false | true | boolean | enable limitation on custom fluctuated value in MeterValues |
db7d7aa6 172| commandsSupport | | {<br />"incomingCommands": {},<br />"outgoingCommands": {}<br />} | {<br /> incomingCommands: Record<IncomingRequestCommand, boolean>;<br />outgoingCommands?: Record<RequestCommand, boolean>;<br />} | Configuration section for OCPP commands support. Empty section or subsections means all implemented commands are supported |
65554cc3
JB
173| Configuration | | | ChargingStationConfiguration | charging stations OCPP parameters configuration section |
174| AutomaticTransactionGenerator | | | AutomaticTransactionGenerator | charging stations ATG configuration section |
175| Connectors | | | Connectors | charging stations connectors configuration section |
c94a349a
JB
176
177#### Configuration section
178
179```json
0302da79 180 "Configuration": {
c94a349a
JB
181 "configurationKey": [
182 ...
183 {
184 "key": "StandardKey",
185 "readonly": false,
186 "value": "StandardValue",
187 "visible": true,
188 "reboot": false
189 },
190 ...
191 {
192 "key": "VendorKey",
193 "readonly": false,
194 "value": "VendorValue",
195 "visible": false,
196 "reboot": true
197 },
198 ...
199 ]
200 }
201```
202
203#### AutomaticTransactionGenerator section
204
c72f6634
JB
205Section type definition:
206
207```ts
208type AutomaticTransactionGeneratorConfiguration = {
209 enable: boolean;
210 minDuration: number;
211 maxDuration: number;
212 minDelayBetweenTwoTransactions: number;
213 maxDelayBetweenTwoTransactions: number;
214 probabilityOfStart: number;
215 stopAfterHours: number;
216 stopOnConnectionFailure: boolean;
217 requireAuthorize?: boolean;
218 idTagDistribution?: 'random' | 'round-robin' | 'connector-affinity';
219};
220```
221
222Section example:
223
c94a349a 224```json
0302da79 225 "AutomaticTransactionGenerator": {
c94a349a
JB
226 "enable": false,
227 "minDuration": 60,
228 "maxDuration": 80,
229 "minDelayBetweenTwoTransactions": 15,
230 "maxDelayBetweenTwoTransactions": 30,
231 "probabilityOfStart": 1,
232 "stopAfterHours": 0.3,
233 "stopOnConnectionFailure": true,
c72f6634
JB
234 "requireAuthorize": true,
235 "idTagDistribution": "random"
c94a349a
JB
236 }
237```
e7aeea18 238
c94a349a
JB
239#### Connectors section
240
241```json
0302da79 242 "Connectors": {
c94a349a
JB
243 "0": {},
244 "1": {
245 "bootStatus": "Available",
246 "MeterValues": [
9bd87386
JB
247 ...
248 {
249 "unit": "W",
250 "measurand": "Power.Active.Import",
251 "phase": "L1-N",
252 "value": "5000",
253 "fluctuationPercent": "10"
254 },
c94a349a
JB
255 ...
256 {
257 "unit": "A",
258 "measurand": "Current.Import"
259 },
260 ...
261 {
262 "unit": "Wh"
263 },
264 ...
265 ]
266 }
267 },
268```
269
1816f743
JB
270### Charging station configuration
271
1c51fd1d 272**dist/assets/configurations/\<hashId\>.json**:
1816f743 273
a9ec2018 274The charging station configuration file is automatically generated at startup from the charging station configuration template file and is persistent.
1816f743
JB
275
276The charging station configuration file content can be regenerated partially on matching charging station configuration template file changes. The charging station serial number is kept unchanged.
277
278#### stationInfo section
279
280The syntax is similar to charging station configuration template with some added fields like the charging station id (name) and the 'Configuration' section removed.
281
282#### configurationKey section
283
284The syntax is similar to the charging station configuration template 'Configuration' section.
285
6f0ec20e
JB
286## Docker
287
288In the [docker](./docker) folder:
289
290```bash
291make
292```
293
bfcad885 294Or with the optional git submodules:
6f0ec20e
JB
295
296```bash
bfcad885 297make SUBMODULES_INIT=true
6f0ec20e
JB
298```
299
300## OCPP-J commands supported
c94a349a
JB
301
302### Version 1.6
303
c56d42f1 304#### Core Profile
6f0ec20e 305
778f7924
JB
306- :white_check_mark: Authorize
307- :white_check_mark: BootNotification
308- :white_check_mark: ChangeAvailability
309- :white_check_mark: ChangeConfiguration
310- :white_check_mark: ClearCache
9e1b12e4 311- :x: DataTransfer
778f7924
JB
312- :white_check_mark: GetConfiguration
313- :white_check_mark: Heartbeat
314- :white_check_mark: MeterValues
315- :white_check_mark: RemoteStartTransaction
316- :white_check_mark: RemoteStopTransaction
317- :white_check_mark: Reset
318- :white_check_mark: StartTransaction
319- :white_check_mark: StatusNotification
320- :white_check_mark: StopTransaction
321- :white_check_mark: UnlockConnector
6f0ec20e 322
c56d42f1 323#### Firmware Management Profile
6f0ec20e 324
b652b0c3 325- :white_check_mark: GetDiagnostics
d50343bd 326- :white_check_mark: DiagnosticsStatusNotification
9e1b12e4
JB
327- :x: FirmwareStatusNotification
328- :x: UpdateFirmware
6f0ec20e 329
c56d42f1 330#### Local Auth List Management Profile
6f0ec20e 331
9e1b12e4
JB
332- :x: GetLocalListVersion
333- :x: SendLocalList
6f0ec20e 334
c56d42f1 335#### Reservation Profile
6f0ec20e 336
9e1b12e4
JB
337- :x: CancelReservation
338- :x: ReserveNow
6f0ec20e 339
c56d42f1 340#### Smart Charging Profile
6f0ec20e 341
778f7924 342- :white_check_mark: ClearChargingProfile
68cb8b91 343- :x: GetCompositeSchedule
778f7924 344- :white_check_mark: SetChargingProfile
6f0ec20e 345
c56d42f1 346#### Remote Trigger Profile
6f0ec20e 347
802cfa13 348- :white_check_mark: TriggerMessage
7dde0b73 349
7e1dc878
JB
350## OCPP-J standard parameters supported
351
1816f743 352All kind of OCPP parameters are supported in a charging station configuration or a charging station configuration template file. The list here mention the standard ones also handled automatically in the simulator.
7e1dc878
JB
353
354### Version 1.6
355
c56d42f1 356#### Core Profile
7e1dc878
JB
357
358- :white_check_mark: AuthorizeRemoteTxRequests (type: boolean) (units: -)
359- :x: ClockAlignedDataInterval (type: integer) (units: seconds)
291cb255 360- :white_check_mark: ConnectionTimeOut (type: integer) (units: seconds)
7e1dc878
JB
361- :x: GetConfigurationMaxKeys (type: integer) (units: -)
362- :white_check_mark: HeartbeatInterval (type: integer) (units: seconds)
363- :x: LocalAuthorizeOffline (type: boolean) (units: -)
364- :x: LocalPreAuthorize (type: boolean) (units: -)
365- :x: MeterValuesAlignedData (type: CSL) (units: -)
366- :white_check_mark: MeterValuesSampledData (type: CSL) (units: -)
367- :white_check_mark: MeterValueSampleInterval (type: integer) (units: seconds)
368- :white_check_mark: NumberOfConnectors (type: integer) (units: -)
369- :x: ResetRetries (type: integer) (units: times)
370- :white_check_mark: ConnectorPhaseRotation (type: CSL) (units: -)
371- :x: StopTransactionOnEVSideDisconnect (type: boolean) (units: -)
372- :x: StopTransactionOnInvalidId (type: boolean) (units: -)
373- :x: StopTxnAlignedData (type: CSL) (units: -)
374- :x: StopTxnSampledData (type: CSL) (units: -)
36f6a92e 375- :white_check_mark: SupportedFeatureProfiles (type: CSL) (units: -)
7e1dc878
JB
376- :x: TransactionMessageAttempts (type: integer) (units: times)
377- :x: TransactionMessageRetryInterval (type: integer) (units: seconds)
378- :x: UnlockConnectorOnEVSideDisconnect (type: boolean) (units: -)
36f6a92e 379- :white_check_mark: WebSocketPingInterval (type: integer) (units: seconds)
7e1dc878 380
c56d42f1 381#### Firmware Management Profile
7e1dc878 382
e7aeea18 383- _none_
7e1dc878 384
c56d42f1 385#### Local Auth List Management Profile
7e1dc878 386
36f6a92e 387- :white_check_mark: LocalAuthListEnabled (type: boolean) (units: -)
7e1dc878
JB
388- :x: LocalAuthListMaxLength (type: integer) (units: -)
389- :x: SendLocalListMaxLength (type: integer) (units: -)
390
c56d42f1 391#### Reservation Profile
7e1dc878 392
e7aeea18 393- _none_
7e1dc878 394
c56d42f1 395#### Smart Charging Profile
7e1dc878
JB
396
397- :x: ChargeProfileMaxStackLevel (type: integer) (units: -)
398- :x: ChargingScheduleAllowedChargingRateUnit (type: CSL) (units: -)
399- :x: ChargingScheduleMaxPeriods (type: integer) (units: -)
400- :x: MaxChargingProfilesInstalled (type: integer) (units: -)
401
c56d42f1 402#### Remote Trigger Profile
7e1dc878 403
e7aeea18 404- _none_
7e1dc878 405
32de5a57
LM
406## UI protocol
407
03ebf4c1 408Protocol to control the simulator via a Websocket or HTTP server.
32de5a57 409
4df14d3a
JB
410### HTTP Protocol
411
2a61222f 412To learn how to use the HTTP protocol to pilot the simulator, an [Insomnia](https://insomnia.rest/) requests collection is available in [src/assets/ui-protocol](./src/assets/ui-protocol) directory.
4df14d3a 413
02cde3b7 414### Websocket Protocol
32de5a57 415
02cde3b7 416SRPC protocol over Websocket. PDU stands for 'Protocol Data Unit'.
32de5a57 417
03ebf4c1
JB
418- Request:
419 [`uuid`, `ProcedureName`, `PDU`]
420 `uuid`: String uniquely representing this request
421 `ProcedureName`: The procedure to run on the simulator
422 `PDU`: The parameters for said procedure
32de5a57 423
03ebf4c1
JB
424- Response:
425 [`uuid`, `PDU`]
426 `uuid`: String uniquely linking the response to the request
02cde3b7 427 `PDU`: Response parameters to requested procedure
32de5a57 428
d3140adc 429#### Version 0.0.1
4e3ff94d 430
02cde3b7 431Set the Websocket header _Sec-Websocket-Protocol_ to `ui0.0.1`.
4e3ff94d 432
d3140adc 433##### Procedures
32de5a57 434
d3140adc 435###### Start Simulator
5612b691 436
03ebf4c1
JB
437- Request:
438 `ProcedureName`: 'startSimulator'
439 `PDU`: {}
5612b691 440
03ebf4c1
JB
441- Response:
442 `PDU`: {
853ed24a 443 `status`: 'success' | 'failure'
03ebf4c1 444 }
5612b691 445
d3140adc 446###### Stop Simulator
5612b691 447
03ebf4c1
JB
448- Request:
449 `ProcedureName`: 'stopSimulator'
450 `PDU`: {}
5612b691 451
03ebf4c1
JB
452- Response:
453 `PDU`: {
853ed24a 454 `status`: 'success' | 'failure'
03ebf4c1 455 }
5612b691 456
d3140adc 457###### List Charging Stations
32de5a57 458
03ebf4c1
JB
459- Request:
460 `ProcedureName`: 'listChargingStations'
461 `PDU`: {}
32de5a57 462
03ebf4c1
JB
463- Response:
464 `PDU`: {
853ed24a 465 `status`: 'success' | 'failure',
02cde3b7 466 `chargingStations`: ChargingStationData[]
03ebf4c1 467 }
32de5a57 468
d3140adc 469###### Start Transaction
32de5a57 470
03ebf4c1
JB
471- Request:
472 `ProcedureName`: 'startTransaction'
473 `PDU`: {
853ed24a 474 `hashIds`: charging station unique identifier strings array (optional, default: all charging stations),
03ebf4c1
JB
475 `connectorId`: connector id integer,
476 `idTag`: RFID tag string
477 }
32de5a57 478
03ebf4c1
JB
479- Response:
480 `PDU`: {
853ed24a
JB
481 `status`: 'success' | 'failure',
482 `hashIdsSucceeded`: charging station unique identifier strings array,
a9ed42b2
JB
483 `hashIdsFailed`: charging station unique identifier strings array (optional),
484 `responsesFailed`: failed responses payload array (optional)
03ebf4c1 485 }
32de5a57 486
d3140adc 487###### Stop Transaction
32de5a57 488
03ebf4c1
JB
489- Request:
490 `ProcedureName`: 'stopTransaction'
491 `PDU`: {
853ed24a 492 `hashIds`: charging station unique identifier strings array (optional, default: all charging stations),
03ebf4c1
JB
493 `transactionId`: transaction id integer
494 }
32de5a57 495
03ebf4c1
JB
496- Response:
497 `PDU`: {
853ed24a
JB
498 `status`: 'success' | 'failure',
499 `hashIdsSucceeded`: charging station unique identifier strings array,
5566ca3e
JB
500 `hashIdsFailed`: charging station unique identifier strings array (optional),
501 `responsesFailed`: failed responses payload array (optional)
03ebf4c1 502 }
32de5a57 503
d3140adc 504###### Start Charging Station
80a3704c 505
03ebf4c1
JB
506- Request:
507 `ProcedureName`: 'startChargingStation'
508 `PDU`: {
94abe068
JB
509 `hashIds`: charging station unique identifier strings array (optional, default: all charging stations),
510 `responsesFailed`: failed responses payload array (optional)
03ebf4c1 511 }
80a3704c 512
03ebf4c1
JB
513- Response:
514 `PDU`: {
853ed24a
JB
515 `status`: 'success' | 'failure',
516 `hashIdsSucceeded`: charging station unique identifier strings array,
517 `hashIdsFailed`: charging station unique identifier strings array (optional)
03ebf4c1 518 }
80a3704c 519
d3140adc 520###### Stop Charging Station
80a3704c 521
03ebf4c1
JB
522- Request:
523 `ProcedureName`: 'stopChargingStation'
524 `PDU`: {
853ed24a 525 `hashIds`: charging station unique identifier strings array (optional, default: all charging stations)
03ebf4c1 526 }
80a3704c 527
03ebf4c1
JB
528- Response:
529 `PDU`: {
853ed24a
JB
530 `status`: 'success' | 'failure',
531 `hashIdsSucceeded`: charging station unique identifier strings array,
94abe068
JB
532 `hashIdsFailed`: charging station unique identifier strings array (optional),
533 `responsesFailed`: failed responses payload array (optional)
03ebf4c1 534 }
80a3704c 535
d3140adc 536###### Open Connection
e4df816e 537
03ebf4c1
JB
538- Request:
539 `ProcedureName`: 'openConnection'
540 `PDU`: {
853ed24a 541 `hashIds`: charging station unique identifier strings array (optional, default: all charging stations)
03ebf4c1 542 }
e4df816e 543
03ebf4c1
JB
544- Response:
545 `PDU`: {
853ed24a
JB
546 `status`: 'success' | 'failure',
547 `hashIdsSucceeded`: charging station unique identifier strings array,
94abe068
JB
548 `hashIdsFailed`: charging station unique identifier strings array (optional),
549 `responsesFailed`: failed responses payload array (optional)
03ebf4c1 550 }
e4df816e 551
d3140adc 552###### Close Connection
e4df816e 553
03ebf4c1
JB
554- Request:
555 `ProcedureName`: 'closeConnection'
556 `PDU`: {
853ed24a 557 `hashIds`: charging station unique identifier strings array (optional, default: all charging stations)
03ebf4c1
JB
558 }
559
560- Response:
561 `PDU`: {
853ed24a
JB
562 `status`: 'success' | 'failure',
563 `hashIdsSucceeded`: charging station unique identifier strings array,
94abe068
JB
564 `hashIdsFailed`: charging station unique identifier strings array (optional),
565 `responsesFailed`: failed responses payload array (optional)
853ed24a
JB
566 }
567
568###### Start Automatic Transaction Generator
569
570- Request:
571 `ProcedureName`: 'startAutomaticTransactionGenerator'
572 `PDU`: {
573 `hashIds`: charging station unique identifier strings array (optional, default: all charging stations),
a38bc315 574 `connectorIds`: connector id integer array (optional, default: all connectors)
853ed24a
JB
575 }
576
577- Response:
578 `PDU`: {
579 `status`: 'success' | 'failure',
580 `hashIdsSucceeded`: charging station unique identifier strings array,
5566ca3e
JB
581 `hashIdsFailed`: charging station unique identifier strings array (optional),
582 `responsesFailed`: failed responses payload array (optional)
853ed24a
JB
583 }
584
585###### Stop Automatic Transaction Generator
586
587- Request:
588 `ProcedureName`: 'stopAutomaticTransactionGenerator'
589 `PDU`: {
590 `hashIds`: charging station unique identifier strings array (optional, default: all charging stations),
a38bc315 591 `connectorIds`: connector id integer array (optional, default: all connectors)
853ed24a
JB
592 }
593
594- Response:
595 `PDU`: {
596 `status`: 'success' | 'failure',
597 `hashIdsSucceeded`: charging station unique identifier strings array,
5566ca3e
JB
598 `hashIdsFailed`: charging station unique identifier strings array (optional),
599 `responsesFailed`: failed responses payload array (optional)
03ebf4c1
JB
600 }
601
5566ca3e 602###### Status Notification
a9ed42b2
JB
603
604- Request:
605 `ProcedureName`: 'StatusNotification'
606 `PDU`: {
607 `hashIds`: charging station unique identifier strings array (optional, default: all charging stations),
10db00b2
JB
608 `connectorId`: connector id integer,
609 `errorCode`: connector error code,
610 `status`: connector status
611 }
612
613- Response:
614 `PDU`: {
615 `status`: 'success' | 'failure',
616 `hashIdsSucceeded`: charging station unique identifier strings array,
617 `hashIdsFailed`: charging station unique identifier strings array (optional),
618 `responsesFailed`: failed responses payload array (optional)
619 }
620
621###### Heartbeat
622
623- Request:
624 `ProcedureName`: 'Heartbeat'
625 `PDU`: {
626 `hashIds`: charging station unique identifier strings array (optional, default: all charging stations),
a9ed42b2
JB
627 }
628
629- Response:
630 `PDU`: {
631 `status`: 'success' | 'failure',
632 `hashIdsSucceeded`: charging station unique identifier strings array,
5566ca3e 633 `hashIdsFailed`: charging station unique identifier strings array (optional),
a9ed42b2
JB
634 `responsesFailed`: failed responses payload array (optional)
635 }
636
251fff5c 637## Support, Feedback, Contributing
7dde0b73 638
7f774a55 639This project is open to feature requests/suggestions, bug reports etc. via [GitHub issues](https://github.com/SAP/e-mobility-charging-stations-simulator/issues). Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](CONTRIBUTING.md).
7dde0b73 640
251fff5c
JB
641## Code of Conduct
642
643We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone. By participating in this project, you agree to abide by its [Code of Conduct](CODE_OF_CONDUCT.md) at all times.
644
645## Licensing
646
7f774a55 647Copyright 2020-2022 SAP SE or an SAP affiliate company and e-mobility-charging-stations-simulator contributors. Please see our [LICENSE](LICENSE) for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available [via the REUSE tool](https://api.reuse.software/info/github.com/SAP/e-mobility-charging-stations-simulator).