Simple [node.js](https://nodejs.org/) program to simulate a set of charging stations based on the OCPP-J 1.6 protocol.
-## Start
-
-To start the program, run: `npm start`.
-
## Configuration syntax
All configuration files are in the JSON standard format.
supervisionURLs | | [] | string[] | array of connection URIs to OCPP-J servers
distributeStationsToTenantsEqually | true/false | true | boolean | distribute charging stations uniformly to the OCPP-J servers
statisticsDisplayInterval | | 60 | integer | seconds between charging stations statistics output in the logs
-workerProcess | workerSet/staticPool/dynamicPool | workerSet | string | worker threads process type
+workerProcess | workerSet/staticPool/dynamicPool | workerSet | string | worker threads process type
+workerStartDelay | | 500 | integer | milliseconds to wait at charging station worker threads startup
workerPoolMinSize | | 4 | integer | worker threads pool minimum number of threads
workerPoolMaxSize | | 16 | integer | worker threads pool maximum number of threads
+workerPoolStrategy | ROUND_ROBIN/LESS_RECENTLY_USED/... | [poolifier](https://github.com/pioardi/poolifier) default: ROUND_ROBBIN | string | worker threads pool [poolifier](https://github.com/pioardi/poolifier) worker choice strategy
chargingStationsPerWorker | | 1 | integer | number of charging stations per worker threads for the `workerSet` process type
logConsole | true/false | false | boolean | output logs on the console
logFormat | | simple | string | winston log format
logRotate | true/false | true | boolean | enable daily log files rotation
-logMaxFiles | | 7 | integer | maximum number of files to keep
+logMaxFiles | | 7 | integer | maximum number of log files to keep
logLevel | emerg/alert/crit/error/warning/notice/info/debug | info | string | winston logging level
logFile | | combined.log | string | log file relative path
logErrorFile | | error.log | string | error log file relative path
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 the connector id
+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
connectionTimeout | | 30 | integer | connection timeout to the OCPP-J server
autoReconnectMaxRetries | | -1 (unlimited) | integer | connection retries to the OCPP-J server
#### Configuration section
```json
-"Configuration": {
+ "Configuration": {
"configurationKey": [
...
{
#### AutomaticTransactionGenerator section
```json
- "AutomaticTransactionGenerator": {
+ "AutomaticTransactionGenerator": {
"enable": false,
"minDuration": 60,
"maxDuration": 80,
#### Connectors section
```json
-"Connectors": {
+ "Connectors": {
"0": {},
"1": {
"bootStatus": "Available",
},
```
-## OCPP commands
+## Start
+
+To start the program, run: `npm start`.
+
+## Docker
+
+In the [docker](./docker) folder:
+
+```bash
+make
+```
+
+Or without the optional git submodules:
+
+```bash
+make SUBMODULES_INIT=false
+```
+
+## OCPP-J commands supported
### Version 1.6
-TODO
+### 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
+
+- :x: GetDiagnostics
+- :x: 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
+
+- :x: TriggerMessage
## License