+| Key | Value(s) | Default Value | Value type | Description |
+| --------------------------------- | ---------- | --------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
+| supervisionUrls | | '' | string \| string[] | string or array of connection URIs to OCPP-J servers. It has priority over the global configuration parameter |
+| supervisionUser | | '' | string | basic HTTP authentication user to OCPP-J server |
+| supervisionPassword | | '' | string | basic HTTP authentication password to OCPP-J server |
+| supervisionUrlOcppConfiguration | true/false | false | boolean | allow supervision URL configuration via a vendor OCPP parameter key |
+| supervisionUrlOcppKey | | 'ConnectionUrl' | string | the vendor string that will be used as a vendor OCPP parameter key to set the supervision URL |
+| ocppVersion | 1.6 | 1.6 | string | OCPP version |
+| ocppProtocol | json | json | string | OCPP protocol |
+| ocppStrictCompliance | true/false | false | boolean | strict adherence to the OCPP version and protocol specifications |
+| ocppPersistentConfiguration | true/false | true | boolean | enable persistent OCPP parameters by charging station autogenerated name |
+| wsOptions | | {} | ClientOptions & ClientRequestArgs | [ws](https://github.com/websockets/ws) and node.js [http](https://nodejs.org/api/http.html) clients options intersection |
+| authorizationFile | | '' | string | RFID tags list file relative to src/assets path |
+| baseName | | '' | string | base name to build charging stations name |
+| nameSuffix | | '' | string | name suffix to build charging stations name |
+| fixedName | true/false | false | boolean | use the baseName as the charging stations unique name |
+| chargePointModel | | '' | string | charging stations model |
+| chargePointVendor | | '' | string | charging stations vendor |
+| chargeBoxSerialNumberPrefix | | '' | string | charging stations serial number prefix |
+| firmwareVersion | | '' | string | charging stations firmware version |
+| power | | | float \| float[] | charging stations maximum power value(s) |
+| powerSharedByConnectors | true/false | false | boolean | charging stations power shared by its connectors |
+| powerUnit | W/kW | W | string | charging stations power unit |
+| currentOutType | AC/DC | AC | string | charging stations current out type |
+| voltageOut | | AC:230/DC:400 | integer | charging stations voltage out |
+| numberOfPhases | 0/1/3 | AC:3/DC:0 | integer | charging stations number of phase(s) |
+| numberOfConnectors | | | integer \| integer[] | charging stations number of connector(s) |
+| useConnectorId0 | true/false | true | boolean | use connector id 0 definition from the template |
+| randomConnectors | true/false | false | boolean | randomize runtime connector id affectation from the connector id definition in template |
+| resetTime | | 60 | integer | seconds to wait before the charging stations come back at reset |
+| autoRegister | true/false | false | boolean | set the charging station 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 |
+| enableStatistics | true/false | true | boolean | enable charging stations statistics |
+| mayAuthorizeAtRemoteStart | true/false | true | boolean | always send authorize at remote start transaction when AuthorizeRemoteTxRequests is enabled |
+| beginEndMeterValues | true/false | false | boolean | enable Transaction.{Begin,End} MeterValues |
+| outOfOrderEndMeterValues | true/false | false | boolean | send Transaction.End MeterValues out of order. Need to relax OCPP specifications strict compliance ('ocppStrictCompliance' parameter) |
+| meteringPerTransaction | true/false | true | boolean | enable metering history on a per transaction basis |
+| transactionDataMeterValues | true/false | false | boolean | enable transaction data MeterValues at stop transaction |
+| mainVoltageMeterValues | true/false | true | boolean | include charging station main voltage MeterValues on three phased charging stations |
+| phaseLineToLineVoltageMeterValues | true/false | true | boolean | include charging station line to line voltage MeterValues on three phased charging stations |
+| Configuration | | | ChargingStationConfiguration | charging stations OCPP parameters configuration section |
+| AutomaticTransactionGenerator | | | AutomaticTransactionGenerator | charging stations ATG configuration section |
+| Connectors | | | Connectors | charging stations connectors configuration section |
+
+#### Configuration section
+
+```json
+ "Configuration": {
+ "configurationKey": [
+ ...
+ {
+ "key": "StandardKey",
+ "readonly": false,
+ "value": "StandardValue",
+ "visible": true,
+ "reboot": false
+ },
+ ...
+ {
+ "key": "VendorKey",
+ "readonly": false,
+ "value": "VendorValue",
+ "visible": false,
+ "reboot": true
+ },
+ ...
+ ]
+ }
+```
+
+#### AutomaticTransactionGenerator section
+
+```json
+ "AutomaticTransactionGenerator": {
+ "enable": false,
+ "minDuration": 60,
+ "maxDuration": 80,
+ "minDelayBetweenTwoTransactions": 15,
+ "maxDelayBetweenTwoTransactions": 30,
+ "probabilityOfStart": 1,
+ "stopAfterHours": 0.3,
+ "stopOnConnectionFailure": true,
+ "requireAuthorize": true
+ }
+```
+
+#### Connectors section
+
+```json
+ "Connectors": {
+ "0": {},
+ "1": {
+ "bootStatus": "Available",
+ "MeterValues": [
+ ...
+ {
+ "unit": "W",
+ "measurand": "Power.Active.Import",
+ "phase": "L1-N",
+ "value": "5000",
+ "fluctuationPercent": "10"
+ },
+ ...
+ {
+ "unit": "A",
+ "measurand": "Current.Import"
+ },
+ ...
+ {
+ "unit": "Wh"
+ },
+ ...
+ ]
+ }
+ },
+```
+
+## Start
+
+To start the program, run: `npm start`.
+
+## Docker
+
+In the [docker](./docker) folder:
+
+```bash
+make
+```
+
+Or with the optional git submodules:
+
+```bash
+make SUBMODULES_INIT=true
+```
+
+## OCPP-J commands supported
+
+### Version 1.6
+
+#### Core Profile
+
+- :white_check_mark: Authorize
+- :white_check_mark: BootNotification
+- :white_check_mark: ChangeAvailability
+- :white_check_mark: ChangeConfiguration
+- :white_check_mark: ClearCache
+- :x: DataTransfer
+- :white_check_mark: GetConfiguration
+- :white_check_mark: Heartbeat
+- :white_check_mark: MeterValues
+- :white_check_mark: RemoteStartTransaction
+- :white_check_mark: RemoteStopTransaction
+- :white_check_mark: Reset
+- :white_check_mark: StartTransaction
+- :white_check_mark: StatusNotification
+- :white_check_mark: StopTransaction
+- :white_check_mark: UnlockConnector
+
+#### Firmware Management Profile
+
+- :white_check_mark: GetDiagnostics
+- :white_check_mark: DiagnosticsStatusNotification
+- :x: FirmwareStatusNotification
+- :x: UpdateFirmware
+
+#### Local Auth List Management Profile
+
+- :x: GetLocalListVersion
+- :x: SendLocalList
+
+#### Reservation Profile
+
+- :x: CancelReservation
+- :x: ReserveNow
+
+#### Smart Charging Profile
+
+- :white_check_mark: ClearChargingProfile
+- :white_check_mark: GetCompositeSchedule
+- :white_check_mark: SetChargingProfile
+
+#### Remote Trigger Profile
+
+- :white_check_mark: TriggerMessage
+
+## OCPP-J standard parameters supported
+
+All kind of OCPP parameters are supported in a charging station template. The list here mention the standard ones also handled automatically in the simulator.
+
+### Version 1.6
+
+#### Core Profile
+
+- :white_check_mark: AuthorizeRemoteTxRequests (type: boolean) (units: -)
+- :x: ClockAlignedDataInterval (type: integer) (units: seconds)
+- :white_check_mark: ConnectionTimeOut (type: integer) (units: seconds)
+- :x: GetConfigurationMaxKeys (type: integer) (units: -)
+- :white_check_mark: HeartbeatInterval (type: integer) (units: seconds)
+- :x: LocalAuthorizeOffline (type: boolean) (units: -)
+- :x: LocalPreAuthorize (type: boolean) (units: -)
+- :x: MeterValuesAlignedData (type: CSL) (units: -)
+- :white_check_mark: MeterValuesSampledData (type: CSL) (units: -)
+- :white_check_mark: MeterValueSampleInterval (type: integer) (units: seconds)
+- :white_check_mark: NumberOfConnectors (type: integer) (units: -)
+- :x: ResetRetries (type: integer) (units: times)
+- :white_check_mark: ConnectorPhaseRotation (type: CSL) (units: -)
+- :x: StopTransactionOnEVSideDisconnect (type: boolean) (units: -)
+- :x: StopTransactionOnInvalidId (type: boolean) (units: -)
+- :x: StopTxnAlignedData (type: CSL) (units: -)
+- :x: StopTxnSampledData (type: CSL) (units: -)
+- :white_check_mark: SupportedFeatureProfiles (type: CSL) (units: -)
+- :x: TransactionMessageAttempts (type: integer) (units: times)
+- :x: TransactionMessageRetryInterval (type: integer) (units: seconds)
+- :x: UnlockConnectorOnEVSideDisconnect (type: boolean) (units: -)
+- :white_check_mark: WebSocketPingInterval (type: integer) (units: seconds)
+
+#### Firmware Management Profile
+
+- _none_
+
+#### Local Auth List Management Profile
+
+- :white_check_mark: LocalAuthListEnabled (type: boolean) (units: -)
+- :x: LocalAuthListMaxLength (type: integer) (units: -)
+- :x: SendLocalListMaxLength (type: integer) (units: -)
+
+#### Reservation Profile
+
+- _none_
+
+#### Smart Charging Profile
+
+- :x: ChargeProfileMaxStackLevel (type: integer) (units: -)
+- :x: ChargingScheduleAllowedChargingRateUnit (type: CSL) (units: -)
+- :x: ChargingScheduleMaxPeriods (type: integer) (units: -)
+- :x: MaxChargingProfilesInstalled (type: integer) (units: -)
+
+#### Remote Trigger Profile
+
+- _none_