test(simulator): use standard file namespace for tests
[e-mobility-charging-stations-simulator.git] / README.md
index 6dd60d3ad157358f74e2e121c7b385f36e47ecb0..91ebf65cb91d004029dd845fe7a5b1e9da368049 100644 (file)
--- a/README.md
+++ b/README.md
@@ -2,22 +2,23 @@
 
 # [e-mobility charging stations simulator](https://github.com/sap/e-mobility-charging-stations-simulator)
 
+[![CI worklow](https://github.com/SAP/e-mobility-charging-stations-simulator/actions/workflows/ci.yml/badge.svg)](https://github.com/SAP/e-mobility-charging-stations-simulator/actions/workflows/ci.yml)
 [![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)
 
 ## Summary
 
-Simple [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.
+Simple [node.js](https://nodejs.org/) software to simulate and scale a set of charging stations based on the OCPP-J protocol as part of [SAP e-Mobility](https://www.sap.com/products/scm/e-mobility.html) solution.
 
 ## Prerequisites
 
-Install the [node.js](https://nodejs.org/) LTS runtime environment:
+Install the [node.js](https://nodejs.org/) current LTS or superior version runtime environment:
 
 ### Windows
 
 - [Chocolatey](https://chocolatey.org/):
 
 ```powershell
-choco install -y nodejs-lts
+choco install -y nodejs
 ```
 
 ### MacOSX
@@ -25,7 +26,7 @@ choco install -y nodejs-lts
 - [Homebrew](https://brew.sh/):
 
 ```shell
-brew install node@16
+brew install node
 ```
 
 ### GNU/Linux
@@ -34,22 +35,29 @@ brew install node@16
 
 ## Installation
 
+Enable corepack if not already done and install latest pnpm version:
+
+```shell
+corepack enable
+corepack prepare pnpm@latest --activate
+```
+
 In the repository root, run the following command:
 
 ```shell
-npm install
+pnpm install
 ```
 
 ## Initial configuration
 
 Copy the configuration template file [src/assets/config-template.json](src/assets/config-template.json) to [src/assets/config.json](src/assets/config.json).  
-Copy 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).
+Copy the RFID tags template file [src/assets/idtags-template.json](src/assets/idtags-template.json) to [src/assets/idtags.json](src/assets/idtags.json).
 
 Tweak them to your needs by following the section [configuration files syntax](README.md#configuration-files-syntax).
 
 ## Start
 
-To start the program, run: `npm start`.
+To start the program, run: `pnpm start`.
 
 ## Start Web UI
 
@@ -70,7 +78,7 @@ The charging stations simulator's configuration parameters must be within the `s
 
 All charging station configuration templates are in the directory [src/assets/station-templates](src/assets/station-templates).
 
-A 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).
+A list of RFID tags must be defined for the automatic transaction generator in a file with the default location and name: `src/assets/idtags.json`. A template file is available at [src/assets/idtags-template.json](src/assets/idtags-template.json).
 
 **Configuration files hierarchy and priority**:
 
@@ -78,13 +86,13 @@ A list of RFID tags must be defined for the automatic transaction generator with
 2. charging station configuration template: [src/assets/station-templates](src/assets/station-templates);
 3. charging stations simulator configuration: [src/assets/config.json](src/assets/config.json).
 
-The charging stations simulator have an automatic configuration files reload feature at change for:
+The charging stations simulator has an automatic configuration files reload feature at change for:
 
 - charging stations simulator configuration;
 - charging station configuration templates;
 - charging station authorization RFID tags lists.
 
-But 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.
+But the modifications to test have to be done to the files in the build target directory [dist/assets](dist/assets). Once the modifications are done, they have to be reported to the matching files in the build source directory [src/assets](src/assets) to ensure they will be taken into account at next build.
 
 ### Charging stations simulator configuration
 
@@ -96,14 +104,15 @@ But the modifications to test have to be done to the files in the build target d
 | supervisionUrlDistribution | round-robin/random/charging-station-affinity     | charging-station-affinity                                                                                                                                                                                     | 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                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
+| logFormat                  |                                                  | simple                                                                                                                                                                                                        | string                                                                                                                                                                                                                              | [winston](https://github.com/winstonjs/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                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
+| logMaxFiles                | x/"xd" where x is an integer                     | undefined                                                                                                                                                                                                     | integer \| string                                                                                                                                                                                                                   | maximum number of log files: https://github.com/winstonjs/winston-daily-rotate-file#options                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
+| logMaxSize                 | x/"xk"/"xm"/"xg" where x is a number             | undefined                                                                                                                                                                                                     | number \| string                                                                                                                                                                                                                    | maximum size of log files in bytes, or units of kb, mb, and gb: https://github.com/winstonjs/winston-daily-rotate-file#options                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
+| logLevel                   | emerg/alert/crit/error/warning/notice/info/debug | info                                                                                                                                                                                                          | string                                                                                                                                                                                                                              | [winston](https://github.com/winstonjs/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_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 |
-| 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                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
+| uiServer                   |                                                  | {<br />"enabled": false,<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                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
 | 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)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
 
@@ -122,61 +131,65 @@ 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                                                                                                                                                                   |
-| 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 OCPP commands are supported                                                                       |
-| messageTriggerSupport              |            | {}                                                                | Record<MessageTrigger, boolean>                                                                                                    | Configuration section for OCPP commands trigger support. Empty section means all implemented OCPP trigger 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
+| Key                                                  | Value(s)      | Default Value                                                                                                                       | Value type                                                                                                                                                               | Description                                                                                                                                                                                                                                |
+| ---------------------------------------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| supervisionUrls                                      |               | []                                                                                                                                  | string \| string[]                                                                                                                                                       | string or array of connection URIs to OCPP-J servers                                                                                                                                                                                       |
+| supervisionUser                                      |               | undefined                                                                                                                           | string                                                                                                                                                                   | basic HTTP authentication user to OCPP-J server                                                                                                                                                                                            |
+| supervisionPassword                                  |               | undefined                                                                                                                           | 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/2.0/2.0.1 | 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](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](dist/assets/configurations)        |
+| automaticTransactionGeneratorPersistentConfiguration | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | enable persistent automatic transaction generator configuration storage by charging stations 'hashId'. The persistency is ensured by the charging stations configuration files in [dist/assets/configurations](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                                                                                                                   |
+| idTagsFile                                           |               | undefined                                                                                                                           | string                                                                                                                                                                   | RFID tags list file relative to [src/assets](src/assets) path                                                                                                                                                                              |
+| baseName                                             |               | undefined                                                                                                                           | string                                                                                                                                                                   | base name to build charging stations id                                                                                                                                                                                                    |
+| nameSuffix                                           |               | undefined                                                                                                                           | string                                                                                                                                                                   | name suffix to build charging stations id                                                                                                                                                                                                  |
+| fixedName                                            | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | use the baseName as the charging stations unique name                                                                                                                                                                                      |
+| chargePointModel                                     |               | undefined                                                                                                                           | string                                                                                                                                                                   | charging stations model                                                                                                                                                                                                                    |
+| chargePointVendor                                    |               | undefined                                                                                                                           | string                                                                                                                                                                   | charging stations vendor                                                                                                                                                                                                                   |
+| chargePointSerialNumberPrefix                        |               | undefined                                                                                                                           | string                                                                                                                                                                   | charge point serial number prefix                                                                                                                                                                                                          |
+| chargeBoxSerialNumberPrefix                          |               | undefined                                                                                                                           | string                                                                                                                                                                   | charge box serial number prefix (deprecated in OCPP 1.6)                                                                                                                                                                                   |
+| firmwareVersionPattern                               |               | Semantic versionning regular expression: https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string | string                                                                                                                                                                   | charging stations firmware version pattern                                                                                                                                                                                                 |
+| firmwareVersion                                      |               | undefined                                                                                                                           | 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    | false                                                                                                                               | 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    | false                                                                                                                               | 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                                                                                                                                                                                |
+| firmwareUpgrade                                      |               | {<br />"versionUpgrade": {<br />"step": 1<br />},<br />"reset": true<br />}                                                         | {<br />versionUpgrade: {<br />patternGroup: number;<br />step: number;<br />};<br />reset: boolean;<br />failureStatus: 'DownloadFailed' \| 'InstallationFailed';<br />} | Configuration section for simulating firmware upgrade support.                                                                                                                                                                             |
+| 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 OCPP commands are supported                                                                                                            |
+| messageTriggerSupport                                |               | {}                                                                                                                                  | Record<MessageTrigger, boolean>                                                                                                                                          | Configuration section for OCPP commands trigger support. Empty section means all implemented OCPP trigger commands are supported                                                                                                           |
+| Configuration                                        |               |                                                                                                                                     | ChargingStationOcppConfiguration                                                                                                                                         | charging stations OCPP parameters configuration section                                                                                                                                                                                    |
+| AutomaticTransactionGenerator                        |               |                                                                                                                                     | AutomaticTransactionGeneratorConfiguration                                                                                                                               | charging stations ATG configuration section                                                                                                                                                                                                |
+| Connectors                                           |               |                                                                                                                                     | Record<string, ConnectorStatus>                                                                                                                                          | charging stations connectors configuration section                                                                                                                                                                                         |
+| Evses                                                |               |                                                                                                                                     | Record<string, EvseTemplate>                                                                                                                                             | charging stations EVSEs configuration section                                                                                                                                                                                              |
+
+#### Configuration section syntax example
 
 ```json
   "Configuration": {
@@ -202,9 +215,9 @@ But the modifications to test have to be done to the files in the build target d
   }
 ```
 
-#### AutomaticTransactionGenerator section
+#### AutomaticTransactionGenerator section syntax example
 
-Section type definition:
+##### Type definition:
 
 ```ts
 type AutomaticTransactionGeneratorConfiguration = {
@@ -221,7 +234,7 @@ type AutomaticTransactionGeneratorConfiguration = {
 };
 ```
 
-Section example:
+##### Example:
 
 ```json
   "AutomaticTransactionGenerator": {
@@ -238,7 +251,7 @@ Section example:
   }
 ```
 
-#### Connectors section
+#### Connectors section syntax example
 
 ```json
   "Connectors": {
@@ -257,7 +270,8 @@ Section example:
         ...
         {
           "unit": "A",
-          "measurand": "Current.Import"
+          "measurand": "Current.Import",
+          "minimum": "0.5"
         },
         ...
         {
@@ -269,6 +283,46 @@ Section example:
   },
 ```
 
+#### Evses section syntax example
+
+```json
+  "Evses": {
+    "0": {
+      "Connectors": {
+        "0": {}
+      }
+    },
+    "1": {
+      "Connectors": {
+        "1": {
+          "bootStatus": "Available",
+          "MeterValues": [
+            ...
+            {
+              "unit": "W",
+              "measurand": "Power.Active.Import",
+              "phase": "L1-N",
+              "value": "5000",
+              "fluctuationPercent": "10"
+            },
+            ...
+            {
+              "unit": "A",
+              "measurand": "Current.Import",
+              "minimum": "0.5"
+            },
+            ...
+            {
+              "unit": "Wh"
+            },
+            ...
+          ]
+        }
+      }
+    }
+  },
+```
+
 ### Charging station configuration
 
 **dist/assets/configurations/\<hashId\>.json**:
@@ -285,6 +339,10 @@ The syntax is similar to charging station configuration template with some added
 
 The syntax is similar to the charging station configuration template 'Configuration' section.
 
+#### automaticTransactionGenerator section
+
+The syntax is similar to the charging station configuration template 'AutomaticTransactionGenerator' section.
+
 ## Docker
 
 In the [docker](./docker) folder:
@@ -326,8 +384,8 @@ make SUBMODULES_INIT=true
 
 - :white_check_mark: GetDiagnostics
 - :white_check_mark: DiagnosticsStatusNotification
-- :x: FirmwareStatusNotification
-- :x: UpdateFirmware
+- :white_check_mark: FirmwareStatusNotification
+- :white_check_mark: UpdateFirmware
 
 #### Local Auth List Management Profile
 
@@ -349,9 +407,24 @@ make SUBMODULES_INIT=true
 
 - :white_check_mark: TriggerMessage
 
+### Version 2.x.x
+
+#### Provisioning
+
+- :white_check_mark: BootNotification
+
+#### Authorization
+
+- :white_check_mark: ClearCache
+
+#### Availability
+
+- :white_check_mark: StatusNotification
+- :white_check_mark: Heartbeat
+
 ## OCPP-J standard parameters supported
 
-All 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.
+All kind of OCPP parameters are supported in charging station configuration or charging station configuration template file. The list here mention the standard ones also handled automatically in the simulator.
 
 ### Version 1.6
 
@@ -405,13 +478,15 @@ All kind of OCPP parameters are supported in a charging station configuration or
 
 - _none_
 
+### Version 2.x.x
+
 ## UI protocol
 
 Protocol to control the simulator via a Websocket or HTTP server.
 
 ### HTTP Protocol
 
-To 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.
+To learn how to use the HTTP protocol to pilot the simulator, an [Insomnia](https://insomnia.rest/) HTTP requests collection is available in [src/assets/ui-protocol](./src/assets/ui-protocol) directory.
 
 ### Websocket Protocol
 
@@ -428,6 +503,8 @@ SRPC protocol over Websocket. PDU stands for 'Protocol Data Unit'.
   `uuid`: String uniquely linking the response to the request  
   `PDU`: Response parameters to requested procedure
 
+An [Insomnia](https://insomnia.rest/) WebSocket requests collection is available in [src/assets/ui-protocol](./src/assets/ui-protocol) directory.
+
 #### Version 0.0.1
 
 Set the Websocket header _Sec-Websocket-Protocol_ to `ui0.0.1`.
@@ -473,8 +550,7 @@ Set the Websocket header _Sec-Websocket-Protocol_ to `ui0.0.1`.
 - Request:  
   `ProcedureName`: 'startChargingStation'  
   `PDU`: {  
-  `hashIds`: charging station unique identifier strings array (optional, default: all charging stations),  
-  `responsesFailed`: failed responses payload array (optional)  
+  `hashIds`: charging station unique identifier strings array (optional, default: all charging stations)  
   }
 
 - Response:  
@@ -482,6 +558,7 @@ Set the Websocket header _Sec-Websocket-Protocol_ to `ui0.0.1`.
   `status`: 'success' | 'failure',  
   `hashIdsSucceeded`: charging station unique identifier strings array,  
   `hashIdsFailed`: charging station unique identifier strings array (optional)  
+  `responsesFailed`: failed responses payload array (optional)  
   }
 
 ###### Stop Charging Station
@@ -665,4 +742,4 @@ We as members, contributors, and leaders pledge to make participation in our com
 
 ## Licensing
 
-Copyright 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).
+Copyright 2020-2023 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).