README.md: Fix sections hierarchy
[e-mobility-charging-stations-simulator.git] / README.md
index 448d9a8215f25647b82bf12e739bb3dc1b79f3ff..3c4a77a7eb28c4831a0848953d267c6535e018b9 100644 (file)
--- a/README.md
+++ b/README.md
@@ -28,7 +28,7 @@ brew install node@16
 
 ### GNU/Linux:
 
-- [NodeSource](https://github.com/nodesource/distributions) Node.js Binary Distributions for version 16.X
+- [NodeSource](https://github.com/nodesource/distributions) Node.js Binary Distributions for version >= 16.X
 
 ## Installation
 
@@ -49,8 +49,9 @@ Tweak them to your needs by following the section [configuration files syntax](R
 
 To start the program, run: `npm start`.
 
-To start the program with a UI controller, run: `npm start:server`.
-Then, start/stop the simulator by going to `https://<hostname:port>` in a browser. Localhost port will default to 8080. For Cloud Foundry, the port is assigned based on the `process.env.PORT` environment variable.
+## Start Web UI
+
+See Web UI [README.md](src/ui/web/README.md) for more information.
 
 ## Configuration files syntax
 
@@ -87,27 +88,27 @@ But the modifications to test have to be done to the files in the build target d
 
 **src/assets/config.json**:
 
-| Key                        | Value(s)                                         | Default Value                                                                                                                                                                                                  | Value type                                                                                                                                                                                                                                        | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
-| -------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| supervisionUrls            |                                                  | []                                                                                                                                                                                                             | string \| string[]                                                                                                                                                                                                                                | string or array of global connection URIs to OCPP-J servers                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
-| supervisionUrlDistribution | round-robin/random/sequential                    | round-robin                                                                                                                                                                                                    | boolean                                                                                                                                                                                                                                           | supervision urls distribution policy to simulated charging stations                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
-| logStatisticsInterval      |                                                  | 60                                                                                                                                                                                                             | integer                                                                                                                                                                                                                                           | seconds between charging stations statistics output in the logs                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
-| logConsole                 | true/false                                       | false                                                                                                                                                                                                          | boolean                                                                                                                                                                                                                                           | output logs on the console                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
-| logFormat                  |                                                  | simple                                                                                                                                                                                                         | string                                                                                                                                                                                                                                            | winston log format                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
-| logRotate                  | true/false                                       | true                                                                                                                                                                                                           | boolean                                                                                                                                                                                                                                           | enable daily log files rotation                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
-| logMaxFiles                |                                                  | 7                                                                                                                                                                                                              | integer                                                                                                                                                                                                                                           | maximum number of log files to keep                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
-| logLevel                   | emerg/alert/crit/error/warning/notice/info/debug | info                                                                                                                                                                                                           | string                                                                                                                                                                                                                                            | winston logging level                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
-| logFile                    |                                                  | combined.log                                                                                                                                                                                                   | string                                                                                                                                                                                                                                            | log file relative path                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
-| logErrorFile               |                                                  | error.log                                                                                                                                                                                                      | string                                                                                                                                                                                                                                            | error log file relative path                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
-| worker                     |                                                  | {<br />"processType": "workerSet",<br />"startDelay": 500,<br />"elementStartDelay": 0,<br />"elementsPerWorker": 1,<br />"poolMinSize": 4,<br />"poolMaxSize": 16,<br />"poolStrategy": "ROUND_ROBBIN"<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 |
-| uiServer                   |                                                  | {<br />"enabled": true,<br />"options": {<br />"host: "localhost",<br />"port": 8080<br />}<br />}                                                                                                             | {<br />enabled: boolean;<br />options: ServerOptions;<br />}                                                                                                                                                                                      | UI WebSocket server configuration section                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
-| 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                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
-| 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)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
+| Key                        | Value(s)                                         | Default Value                                                                                                                                                                                                  | Value type                                                                                                                                                                                                                          | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
+| -------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| supervisionUrls            |                                                  | []                                                                                                                                                                                                             | string \| string[]                                                                                                                                                                                                                  | string or array of global connection URIs to OCPP-J servers                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
+| supervisionUrlDistribution | round-robin/random/sequential                    | round-robin                                                                                                                                                                                                    | boolean                                                                                                                                                                                                                             | supervision urls distribution policy to simulated charging stations                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
+| logStatisticsInterval      |                                                  | 60                                                                                                                                                                                                             | integer                                                                                                                                                                                                                             | seconds between charging stations statistics output in the logs                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
+| logConsole                 | true/false                                       | false                                                                                                                                                                                                          | boolean                                                                                                                                                                                                                             | output logs on the console                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
+| logFormat                  |                                                  | simple                                                                                                                                                                                                         | string                                                                                                                                                                                                                              | winston log format                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
+| logRotate                  | true/false                                       | true                                                                                                                                                                                                           | boolean                                                                                                                                                                                                                             | enable daily log files rotation                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
+| logMaxFiles                |                                                  | 7                                                                                                                                                                                                              | integer                                                                                                                                                                                                                             | maximum number of log files to keep                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
+| logLevel                   | emerg/alert/crit/error/warning/notice/info/debug | info                                                                                                                                                                                                           | string                                                                                                                                                                                                                              | winston logging level                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
+| logFile                    |                                                  | combined.log                                                                                                                                                                                                   | string                                                                                                                                                                                                                              | log file relative path                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
+| logErrorFile               |                                                  | error.log                                                                                                                                                                                                      | string                                                                                                                                                                                                                              | error log file relative path                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
+| worker                     |                                                  | {<br />"processType": "workerSet",<br />"startDelay": 500,<br />"elementStartDelay": 0,<br />"elementsPerWorker": 1,<br />"poolMinSize": 4,<br />"poolMaxSize": 16,<br />"poolStrategy": "ROUND_ROBBIN"<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 |
+| 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 />}                                                                                                                                        | UI server configuration section                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
+| 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                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
+| 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)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
 
 #### Worker process model:
 
 - **workerSet**:
-  Worker set executing each a static number (chargingStationsPerWorker) of simulated charging stations from the total
+  Worker set executing each a static number (elementsPerWorker) of simulated charging stations from the total
 
 - **staticPool**:
   Statically sized worker pool executing a static total number of simulated charging stations
@@ -119,56 +120,58 @@ But the modifications to test have to be done to the files in the build target d
 
 **src/assets/station-templates/\<name\>.json**:
 
-| Key                                | Value(s)   | Default Value   | Value type                        | Description                                                                                                                                                                                           |
-| ---------------------------------- | ---------- | --------------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| supervisionUrls                    |            | ''              | string \| string[]                | string or array of connection URIs to OCPP-J servers                                                                                                                                                  |
-| supervisionUser                    |            | ''              | string                            | basic HTTP authentication user to OCPP-J server                                                                                                                                                       |
-| supervisionPassword                |            | ''              | string                            | basic HTTP authentication password to OCPP-J server                                                                                                                                                   |
-| supervisionUrlOcppConfiguration    | true/false | false           | boolean                           | allow supervision URL configuration via a vendor OCPP parameter key                                                                                                                                   |
-| supervisionUrlOcppKey              |            | 'ConnectionUrl' | string                            | the vendor string that will be used as a vendor OCPP parameter key to set the supervision URL                                                                                                         |
-| ocppVersion                        | 1.6        | 1.6             | string                            | OCPP version                                                                                                                                                                                          |
-| ocppProtocol                       | json       | json            | string                            | OCPP protocol                                                                                                                                                                                         |
-| ocppStrictCompliance               | true/false | false           | boolean                           | strict adherence to the OCPP version and protocol specifications                                                                                                                                      |
-| 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                        |
-| 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 |
-| wsOptions                          |            | {}              | ClientOptions & ClientRequestArgs | [ws](https://github.com/websockets/ws) and node.js [http](https://nodejs.org/api/http.html) clients options intersection                                                                              |
-| authorizationFile                  |            | ''              | string                            | RFID tags list file relative to src/assets path                                                                                                                                                       |
-| baseName                           |            | ''              | string                            | base name to build charging stations id                                                                                                                                                               |
-| nameSuffix                         |            | ''              | string                            | name suffix to build charging stations id                                                                                                                                                             |
-| fixedName                          | true/false | false           | boolean                           | use the baseName as the charging stations unique name                                                                                                                                                 |
-| chargePointModel                   |            | ''              | string                            | charging stations model                                                                                                                                                                               |
-| chargePointVendor                  |            | ''              | string                            | charging stations vendor                                                                                                                                                                              |
-| chargePointSerialNumberPrefix      |            | ''              | string                            | charge point serial number prefix                                                                                                                                                                     |
-| chargeBoxSerialNumberPrefix        |            | ''              | string                            | charge box serial number prefix (deprecated in OCPP 1.6)                                                                                                                                              |
-| firmwareVersion                    |            | ''              | string                            | charging stations firmware version                                                                                                                                                                    |
-| power                              |            |                 | float \| float[]                  | charging stations maximum power value(s)                                                                                                                                                              |
-| powerSharedByConnectors            | true/false | false           | boolean                           | charging stations power shared by its connectors                                                                                                                                                      |
-| powerUnit                          | W/kW       | W               | string                            | charging stations power unit                                                                                                                                                                          |
-| currentOutType                     | AC/DC      | AC              | string                            | charging stations current out type                                                                                                                                                                    |
-| voltageOut                         |            | AC:230/DC:400   | integer                           | charging stations voltage out                                                                                                                                                                         |
-| numberOfPhases                     | 0/1/3      | AC:3/DC:0       | integer                           | charging stations number of phase(s)                                                                                                                                                                  |
-| numberOfConnectors                 |            |                 | integer \| integer[]              | charging stations number of connector(s)                                                                                                                                                              |
-| useConnectorId0                    | true/false | true            | boolean                           | use connector id 0 definition from the charging station configuration template                                                                                                                        |
-| randomConnectors                   | true/false | false           | boolean                           | randomize runtime connector id affectation from the connector id definition in charging station configuration template                                                                                |
-| resetTime                          |            | 60              | integer                           | seconds to wait before the charging stations come back at reset                                                                                                                                       |
-| autoRegister                       | true/false | false           | boolean                           | set charging stations as registered at boot notification for testing purpose                                                                                                                          |
-| autoReconnectMaxRetries            |            | -1 (unlimited)  | integer                           | connection retries to the OCPP-J server                                                                                                                                                               |
-| reconnectExponentialDelay          | true/false | false           | boolean                           | connection delay retry to the OCPP-J server                                                                                                                                                           |
-| registrationMaxRetries             |            | -1 (unlimited)  | integer                           | charging stations boot notification retries                                                                                                                                                           |
-| 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                                                                             |
-| amperageLimitationUnit             | A/cA/dA/mA | A               | string                            | charging stations amperage limit unit                                                                                                                                                                 |
-| enableStatistics                   | true/false | true            | boolean                           | enable charging stations statistics                                                                                                                                                                   |
-| mayAuthorizeAtRemoteStart          | true/false | true            | boolean                           | always send authorize at remote start transaction when AuthorizeRemoteTxRequests is enabled                                                                                                           |
-| beginEndMeterValues                | true/false | false           | boolean                           | enable Transaction.{Begin,End} MeterValues                                                                                                                                                            |
-| outOfOrderEndMeterValues           | true/false | false           | boolean                           | send Transaction.End MeterValues out of order. Need to relax OCPP specifications strict compliance ('ocppStrictCompliance' parameter)                                                                 |
-| meteringPerTransaction             | true/false | true            | boolean                           | enable metering history on a per transaction basis                                                                                                                                                    |
-| transactionDataMeterValues         | true/false | false           | boolean                           | enable transaction data MeterValues at stop transaction                                                                                                                                               |
-| mainVoltageMeterValues             | true/false | true            | boolean                           | include charging stations main voltage MeterValues on three phased charging stations                                                                                                                  |
-| phaseLineToLineVoltageMeterValues  | true/false | true            | boolean                           | include charging stations line to line voltage MeterValues on three phased charging stations                                                                                                          |
-| customValueLimitationMeterValues   | true/false | true            | boolean                           | enable limitation on custom fluctuated value in MeterValues                                                                                                                                           |
-| Configuration                      |            |                 | ChargingStationConfiguration      | charging stations OCPP parameters configuration section                                                                                                                                               |
-| AutomaticTransactionGenerator      |            |                 | AutomaticTransactionGenerator     | charging stations ATG configuration section                                                                                                                                                           |
-| Connectors                         |            |                 | Connectors                        | charging stations connectors configuration section                                                                                                                                                    |
+| Key                                | Value(s)   | Default Value                                                     | Value type                                                                                                                         | Description                                                                                                                                                                                           |
+| ---------------------------------- | ---------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| supervisionUrls                    |            | ''                                                                | string \| string[]                                                                                                                 | string or array of connection URIs to OCPP-J servers                                                                                                                                                  |
+| supervisionUser                    |            | ''                                                                | string                                                                                                                             | basic HTTP authentication user to OCPP-J server                                                                                                                                                       |
+| supervisionPassword                |            | ''                                                                | string                                                                                                                             | basic HTTP authentication password to OCPP-J server                                                                                                                                                   |
+| supervisionUrlOcppConfiguration    | true/false | false                                                             | boolean                                                                                                                            | allow supervision URL configuration via a vendor OCPP parameter key                                                                                                                                   |
+| supervisionUrlOcppKey              |            | 'ConnectionUrl'                                                   | string                                                                                                                             | the vendor string that will be used as a vendor OCPP parameter key to set the supervision URL                                                                                                         |
+| ocppVersion                        | 1.6        | 1.6                                                               | string                                                                                                                             | OCPP version                                                                                                                                                                                          |
+| ocppProtocol                       | json       | json                                                              | string                                                                                                                             | OCPP protocol                                                                                                                                                                                         |
+| ocppStrictCompliance               | true/false | false                                                             | boolean                                                                                                                            | strict adherence to the OCPP version and protocol specifications                                                                                                                                      |
+| 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                        |
+| 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 |
+| wsOptions                          |            | {}                                                                | ClientOptions & ClientRequestArgs                                                                                                  | [ws](https://github.com/websockets/ws) and node.js [http](https://nodejs.org/api/http.html) clients options intersection                                                                              |
+| authorizationFile                  |            | ''                                                                | string                                                                                                                             | RFID tags list file relative to src/assets path                                                                                                                                                       |
+| baseName                           |            | ''                                                                | string                                                                                                                             | base name to build charging stations id                                                                                                                                                               |
+| nameSuffix                         |            | ''                                                                | string                                                                                                                             | name suffix to build charging stations id                                                                                                                                                             |
+| fixedName                          | true/false | false                                                             | boolean                                                                                                                            | use the baseName as the charging stations unique name                                                                                                                                                 |
+| chargePointModel                   |            | ''                                                                | string                                                                                                                             | charging stations model                                                                                                                                                                               |
+| chargePointVendor                  |            | ''                                                                | string                                                                                                                             | charging stations vendor                                                                                                                                                                              |
+| chargePointSerialNumberPrefix      |            | ''                                                                | string                                                                                                                             | charge point serial number prefix                                                                                                                                                                     |
+| chargeBoxSerialNumberPrefix        |            | ''                                                                | string                                                                                                                             | charge box serial number prefix (deprecated in OCPP 1.6)                                                                                                                                              |
+| firmwareVersion                    |            | ''                                                                | string                                                                                                                             | charging stations firmware version                                                                                                                                                                    |
+| power                              |            |                                                                   | float \| float[]                                                                                                                   | charging stations maximum power value(s)                                                                                                                                                              |
+| powerSharedByConnectors            | true/false | false                                                             | boolean                                                                                                                            | charging stations power shared by its connectors                                                                                                                                                      |
+| powerUnit                          | W/kW       | W                                                                 | string                                                                                                                             | charging stations power unit                                                                                                                                                                          |
+| currentOutType                     | AC/DC      | AC                                                                | string                                                                                                                             | charging stations current out type                                                                                                                                                                    |
+| voltageOut                         |            | AC:230/DC:400                                                     | integer                                                                                                                            | charging stations voltage out                                                                                                                                                                         |
+| numberOfPhases                     | 0/1/3      | AC:3/DC:0                                                         | integer                                                                                                                            | charging stations number of phase(s)                                                                                                                                                                  |
+| numberOfConnectors                 |            |                                                                   | integer \| integer[]                                                                                                               | charging stations number of connector(s)                                                                                                                                                              |
+| useConnectorId0                    | true/false | true                                                              | boolean                                                                                                                            | use connector id 0 definition from the charging station configuration template                                                                                                                        |
+| randomConnectors                   | true/false | false                                                             | boolean                                                                                                                            | randomize runtime connector id affectation from the connector id definition in charging station configuration template                                                                                |
+| resetTime                          |            | 60                                                                | integer                                                                                                                            | seconds to wait before the charging stations come back at reset                                                                                                                                       |
+| autoRegister                       | true/false | false                                                             | boolean                                                                                                                            | set charging stations as registered at boot notification for testing purpose                                                                                                                          |
+| autoReconnectMaxRetries            |            | -1 (unlimited)                                                    | integer                                                                                                                            | connection retries to the OCPP-J server                                                                                                                                                               |
+| reconnectExponentialDelay          | true/false | false                                                             | boolean                                                                                                                            | connection delay retry to the OCPP-J server                                                                                                                                                           |
+| registrationMaxRetries             |            | -1 (unlimited)                                                    | integer                                                                                                                            | charging stations boot notification retries                                                                                                                                                           |
+| 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                                                                             |
+| amperageLimitationUnit             | A/cA/dA/mA | A                                                                 | string                                                                                                                             | charging stations amperage limit unit                                                                                                                                                                 |
+| enableStatistics                   | true/false | true                                                              | boolean                                                                                                                            | enable charging stations statistics                                                                                                                                                                   |
+| mustAuthorizeAtRemoteStart         | true/false | true                                                              | boolean                                                                                                                            | always send authorize at remote start transaction when AuthorizeRemoteTxRequests is enabled                                                                                                           |
+| payloadSchemaValidation            | true/false | true                                                              | boolean                                                                                                                            | validate OCPP commands PDU against [OCA](https://www.openchargealliance.org/) JSON schemas                                                                                                            |
+| beginEndMeterValues                | true/false | false                                                             | boolean                                                                                                                            | enable Transaction.{Begin,End} MeterValues                                                                                                                                                            |
+| outOfOrderEndMeterValues           | true/false | false                                                             | boolean                                                                                                                            | send Transaction.End MeterValues out of order. Need to relax OCPP specifications strict compliance ('ocppStrictCompliance' parameter)                                                                 |
+| meteringPerTransaction             | true/false | true                                                              | boolean                                                                                                                            | enable metering history on a per transaction basis                                                                                                                                                    |
+| transactionDataMeterValues         | true/false | false                                                             | boolean                                                                                                                            | enable transaction data MeterValues at stop transaction                                                                                                                                               |
+| mainVoltageMeterValues             | true/false | true                                                              | boolean                                                                                                                            | include charging stations main voltage MeterValues on three phased charging stations                                                                                                                  |
+| phaseLineToLineVoltageMeterValues  | true/false | true                                                              | boolean                                                                                                                            | include charging stations line to line voltage MeterValues on three phased charging stations                                                                                                          |
+| customValueLimitationMeterValues   | true/false | true                                                              | boolean                                                                                                                            | enable limitation on custom fluctuated value in MeterValues                                                                                                                                           |
+| 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                                                                            |
+| Configuration                      |            |                                                                   | ChargingStationConfiguration                                                                                                       | charging stations OCPP parameters configuration section                                                                                                                                               |
+| AutomaticTransactionGenerator      |            |                                                                   | AutomaticTransactionGenerator                                                                                                      | charging stations ATG configuration section                                                                                                                                                           |
+| Connectors                         |            |                                                                   | Connectors                                                                                                                         | charging stations connectors configuration section                                                                                                                                                    |
 
 #### Configuration section
 
@@ -379,6 +382,152 @@ All kind of OCPP parameters are supported in a charging station configuration or
 
 - _none_
 
+## UI protocol
+
+Protocol to control the simulator via a Websocket or HTTP server.
+
+### HTTP Protocol
+
+A Postman or [Insomnia](https://insomnia.rest/) collection, to learn how to use the HTTP protocol to pilot the simulator, is available in [src/assets](./src/assets/) directory.
+
+### WebSocket Protocol
+
+PDU stands for Protocol Data Unit.
+
+- Request:  
+  [`uuid`, `ProcedureName`, `PDU`]  
+  `uuid`: String uniquely representing this request  
+  `ProcedureName`: The procedure to run on the simulator  
+  `PDU`: The parameters for said procedure
+
+- Response:  
+  [`uuid`, `PDU`]  
+  `uuid`: String uniquely linking the response to the request  
+  `PDU`: Response data to requested procedure
+
+#### Version 0.0.1
+
+Set the WebSocket header _Sec-Websocket-Protocol_ to `ui0.0.1`.
+
+##### Procedures
+
+###### Start Simulator
+
+- Request:  
+  `ProcedureName`: 'startSimulator'  
+  `PDU`: {}
+
+- Response:  
+  `PDU`: {  
+  `status`  
+  }
+
+###### Stop Simulator
+
+- Request:  
+  `ProcedureName`: 'stopSimulator'  
+  `PDU`: {}
+
+- Response:  
+  `PDU`: {  
+  `status`  
+  }
+
+###### List Charging Stations
+
+- Request:  
+  `ProcedureName`: 'listChargingStations'  
+  `PDU`: {}
+
+- Response:  
+  `PDU`: {  
+  `status`,  
+  `index`: ChargingStationData,  
+  ...  
+  `index`: ChargingStationData  
+  }
+
+###### Start Transaction
+
+- Request:  
+  `ProcedureName`: 'startTransaction'  
+  `PDU`: {  
+  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array,  
+  `connectorId`: connector id integer,  
+  `idTag`: RFID tag string  
+  }
+
+- Response:  
+  `PDU`: {  
+  `status`  
+  }
+
+###### Stop Transaction
+
+- Request:  
+  `ProcedureName`: 'stopTransaction'  
+  `PDU`: {  
+  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array,  
+  `transactionId`: transaction id integer  
+  }
+
+- Response:  
+  `PDU`: {  
+  `status`  
+  }
+
+###### Start Charging Station
+
+- Request:  
+  `ProcedureName`: 'startChargingStation'  
+  `PDU`: {  
+  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array  
+  }
+
+- Response:  
+  `PDU`: {  
+  `status`  
+  }
+
+###### Stop Charging Station
+
+- Request:  
+  `ProcedureName`: 'stopChargingStation'  
+  `PDU`: {  
+  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array  
+  }
+
+- Response:  
+  `PDU`: {  
+  `status`  
+  }
+
+###### Open Connection
+
+- Request:  
+  `ProcedureName`: 'openConnection'  
+  `PDU`: {  
+  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array  
+  }
+
+- Response:  
+  `PDU`: {  
+  `status`  
+  }
+
+###### Close Connection
+
+- Request:  
+  `ProcedureName`: 'closeConnection'  
+  `PDU`: {  
+  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array  
+  }
+
+- Response:  
+  `PDU`: {  
+  `status`  
+  }
+
 ## Support, Feedback, Contributing
 
 This 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).