refactor: use RegExp.exec()
[e-mobility-charging-stations-simulator.git] / README.md
index 818a6be28cc327b261107f3dfab391202d3075c4..2a791ce8f4ecdb89cacba4c5ef0bf6e700f30548 100644 (file)
--- a/README.md
+++ b/README.md
@@ -2,7 +2,9 @@
 
 # [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)
+[![GitHub Clones](https://img.shields.io/badge/dynamic/json?color=brightgreen&label=Clone&query=count&url=https://gist.githubusercontent.com/jerome-benoit/c7c669b881d5b27dc0b44a639504ff93/raw/clone.json&logo=github)](https://github.com/SAP/e-mobility-charging-stations-simulator/graphs/traffic)
+[![GitHub commit activity (main)](https://img.shields.io/github/commit-activity/m/SAP/e-mobility-charging-stations-simulator/main?color=brightgreen&logo=github)](https://github.com/SAP/e-mobility-charging-stations-simulator/graphs/commit-activity)
+[![CI workflow](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
@@ -31,7 +33,7 @@ brew install node
 
 ### 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 all supported versions.
 
 ## Installation
 
@@ -53,7 +55,7 @@ pnpm install
 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 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).
+Tweak them to your needs by following the section [configuration files syntax](README.md#configuration-files-syntax): OCPP server supervision URL(s), charging station templates, etc.
 
 ## Start
 
@@ -98,88 +100,88 @@ 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/charging-station-affinity | charging-station-affinity                                                                                                                                                                                                     | string                                                                                                                                                                                                                                                             | supervision urls distribution policy to simulated charging stations                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
-| log                        |                                              | {<br />"enabled": true,<br />"file": "logs/combined.log",<br />"errorFile": "logs/error.log",<br />"statisticsInterval": 60,<br />"level": "info",<br />"console": false,<br />"format": "simple",<br />"rotate": true<br />} | {<br />enabled: boolean;<br />file: string;<br />errorFile: string;<br />statisticsInterval: number;<br />level: string;<br />console: boolean;<br />format: string;<br />rotate: boolean;<br />maxFiles: string \| number;<br />maxSize: string \| number;<br />} | Log configuration section:<br />- enabled: enable logging<br />- file: log file relative path<br />- errorFile: error log file relative path<br />- statisticsInterval: seconds between charging stations statistics output in the logs<br />- level: emerg/alert/crit/error/warning/notice/info/debug [winston](https://github.com/winstonjs/winston) logging level</br >- console: output logs on the console<br />- format: [winston](https://github.com/winstonjs/winston) log format<br />- rotate: enable daily log files rotation<br />- maxFiles: maximum number of log files: https://github.com/winstonjs/winston-daily-rotate-file#options<br />- maxSize: maximum size of log files in bytes, or units of kb, mb, and gb: https://github.com/winstonjs/winston-daily-rotate-file#options |
-| 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` worker 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": 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)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
+| Key                        | Value(s)                                     | Default Value                                                                                                                                                                                                                 | Value type                                                                                                                                                                                                                                                               | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
+| -------------------------- | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| supervisionUrls            |                                              | []                                                                                                                                                                                                                            | string \| string[]                                                                                                                                                                                                                                                       | string or strings array containing global connection URIs to OCPP-J servers                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
+| supervisionUrlDistribution | round-robin/random/charging-station-affinity | charging-station-affinity                                                                                                                                                                                                     | string                                                                                                                                                                                                                                                                   | supervision urls distribution policy to simulated charging stations                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
+| log                        |                                              | {<br />"enabled": true,<br />"file": "logs/combined.log",<br />"errorFile": "logs/error.log",<br />"statisticsInterval": 60,<br />"level": "info",<br />"console": false,<br />"format": "simple",<br />"rotate": true<br />} | {<br />enabled: boolean;<br />file: string;<br />errorFile: string;<br />statisticsInterval: number;<br />level: string;<br />console: boolean;<br />format: string;<br />rotate: boolean;<br />maxFiles: string \| number;<br />maxSize: string \| number;<br />}       | Log configuration section:<br />- _enabled_: enable logging<br />- _file_: log file relative path<br />- _errorFile_: error log file relative path<br />- _statisticsInterval_: seconds between charging stations statistics output in the logs<br />- _level_: emerg/alert/crit/error/warning/notice/info/debug [winston](https://github.com/winstonjs/winston) logging level</br >- _console_: output logs on the console<br />- _format_: [winston](https://github.com/winstonjs/winston) log format<br />- _rotate_: enable daily log files rotation<br />- _maxFiles_: maximum number of log files: https://github.com/winstonjs/winston-daily-rotate-file#options<br />- _maxSize_: maximum size of log files in bytes, or units of kb, mb, and gb: https://github.com/winstonjs/winston-daily-rotate-file#options                                                                                         |
+| worker                     |                                              | {<br />"processType": "workerSet",<br />"startDelay": 500,<br />"elementStartDelay": 0,<br />"elementsPerWorker": 'auto',<br />"poolMinSize": 4,<br />"poolMaxSize": 16<br />}                                                | {<br />processType: WorkerProcessType;<br />startDelay: number;<br />elementStartDelay: number;<br />elementsPerWorker: number \| 'auto' \| 'all';<br />poolMinSize: number;<br />poolMaxSize: number;<br />}                                                            | Worker configuration section:<br />- _processType_: worker threads process type (`workerSet`/`fixedPool`/`dynamicPool`)<br />- _startDelay_: milliseconds to wait at worker threads startup (only for `workerSet` worker 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 (`auto` means (number of stations) / (number of CPUs) \* 1.5 if (number of stations) > (number of CPUs), otherwise 1; `all` means a unique worker will run all charging stations)<br />- _poolMinSize_: worker threads pool minimum number of threads</br >- _poolMaxSize_: worker threads pool maximum number of threads<br />- _resourceLimits_: worker threads [resource limits](https://nodejs.org/api/worker_threads.html#new-workerfilename-options) object option |
+| uiServer                   |                                              | {<br />"enabled": false,<br />"type": "ws",<br />"version": "1.1",<br />"options": {<br />"host": "localhost",<br />"port": 8080<br />}<br />}                                                                                | {<br />enabled: boolean;<br />type: ApplicationProtocol;<br />version: ApplicationProtocolVersion;<br />options: ServerOptions;<br />authentication: {<br />enabled: boolean;<br />type: AuthenticationType;<br />username: string;<br />password: string;<br />}<br />} | UI server configuration section:<br />- _enabled_: enable UI server<br />- _type_: 'http' or 'ws'<br />- _version_: HTTP version '1.1' or '2.0'<br />- _options_: node.js net module [listen options](https://nodejs.org/api/net.html#serverlistenoptions-callback)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
+| performanceStorage         |                                              | {<br />"enabled": false,<br />"type": "jsonfile",<br />"uri": "file:///performance/performanceRecords.json"<br />}                                                                                                            | {<br />enabled: boolean;<br />type: string;<br />uri: string;<br />}                                                                                                                                                                                                     | Performance storage configuration section:<br />- _enabled_: enable performance storage<br />- _type_: 'jsonfile' or 'mongodb'<br />- _uri_: storage URI                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
+| 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 (elementsPerWorker) of simulated charging stations from the total
+  Worker set executing each a fixed number (elementsPerWorker) of simulated charging stations from the total
 
-- **staticPool**:
-  Statically sized worker pool executing a static total number of simulated charging stations
+- **fixedPool**:
+  Fixedly sized worker pool executing a fixed total number of simulated charging stations
 
-- **dynamicPool**:
-  Dynamically sized worker pool executing a static total number of simulated charging stations
+- **dynamicPool** (experimental):
+  Dynamically sized worker pool executing a fixed total number of simulated charging stations
 
 ### Charging station configuration template
 
 **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                                      |               | 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                                                                                                                                                                                              |
+| Key                                                  | Value(s)      | Default Value                                                                                                                      | Value type                                                                                                                                                               | Description                                                                                                                                                                                                                                |
+| ---------------------------------------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| supervisionUrls                                      |               | []                                                                                                                                 | string \| string[]                                                                                                                                                       | string or strings array containing 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    | true                                                                                                                               | boolean                                                                                                                                                                  | strict adherence to the OCPP version and protocol specifications with OCPP commands PDU validation against [OCA](https://www.openchargealliance.org/) JSON schemas                                                                         |
+| 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 since OCPP 1.6)                                                                                                                                                                                |
+| firmwareVersionPattern                               |               | Semantic versioning 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                                                                                                                                                                                                        |
+| remoteAuthorization                                  | true/false    | true                                                                                                                               | boolean                                                                                                                                                                  | enable RFID tags remote authorization                                                                                                                                                                                                      |
+| 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                                                                                                                                                                                    |
+| stopTransactionsOnStopped                            | true/false    | true                                                                                                                               | boolean                                                                                                                                                                  | enable stop transactions on charging station stop                                                                                                                                                                                          |
+| 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
 
@@ -339,15 +341,15 @@ The syntax is similar to the charging station configuration template 'AutomaticT
 
 In the [docker](./docker) folder:
 
-```bash
+```shell
 make
 ```
 
-Or with the optional git submodules:
+<!-- Or with the optional git submodules:
 
-```bash
+```shell
 make SUBMODULES_INIT=true
-```
+``` -->
 
 ## OCPP-J commands supported
 
@@ -392,7 +394,7 @@ make SUBMODULES_INIT=true
 #### Smart Charging Profile
 
 - :white_check_mark: ClearChargingProfile
-- :x: GetCompositeSchedule
+- :white_check_mark: GetCompositeSchedule
 - :white_check_mark: SetChargingProfile
 
 #### Remote Trigger Profile