Untangle charging station worker types from the generic ones
[e-mobility-charging-stations-simulator.git] / README.md
index 8e2c63124dcbce2df313316e38cdfdef0eb3a155..491679850d8849f5248129081b4597bcd3ed32bc 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,20 +1,49 @@
-# ev-simulator
+# [charging-stations-simulator](https://github.com/jerome-benoit/charging-stations-simulator)
 
 ## Summary
 
 Simple [node.js](https://nodejs.org/) program to simulate a set of charging stations based on the OCPP-J 1.6 protocol.
 
+## Prerequisites
+
+### Windows
+
+* [Chocolatey](https://chocolatey.org/):
+
+```powershell
+choco install -y nodejs-lts
+```
+
+### MacOSX
+
+* [Homebrew](https://brew.sh/):
+
+```shell
+brew install node@14
+```
+
+### GNU/Linux: 
+
+* [NodeSource](https://github.com/nodesource/distributions) Node.js Binary Distributions for version 14.X
+
 ## Configuration syntax
 
 All configuration files are in the JSON standard format.  
 
-The program's global configuration parameters must be within the src/assets/config.json file. A configuration template file is available at [src/assets/config-template.json](src/assets/config-template.json).
+The charging stations simulator's main configuration parameters must be within the `src/assets/config.json` file. A configuration template file is available at [src/assets/config-template.json](src/assets/config-template.json).
 
 All charging station templates are in the directory [src/assets/station-templates](src/assets/station-templates).
 
-A list of RFID tags must be defined for the automatic transaction generator with the default location and name src/assets/authorization-tags.json. A template file is available at [src/assets/authorization-tags-template.json](src/assets/authorization-tags-template.json).
+A list of RFID tags must be defined for the automatic transaction generator with the default location and name `src/assets/authorization-tags.json`. A template file is available at [src/assets/authorization-tags-template.json](src/assets/authorization-tags-template.json).
+
+The charging stations simulator have an automatic configuration files reload feature at change for: 
+* main configuration;
+* charging station templates; 
+* authorization RFID tags.
 
-### Global configuration 
+But the modifications to test have to be done to the files in the build result directory [dist/assets](dist/assets). Once the modifications are finished, they have to be reported or copied to the matching files in the build source directory [src/assets](src/assets) to ensure they will be taken into account at next build. 
+
+### Main configuration 
 
 **src/assets/config.json**:
 
@@ -22,13 +51,13 @@ Key | Value(s) | Default Value | Value type | Description
 --- | -------| --------------| ---------- | ------------
 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
 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
+workerPoolStrategy | ROUND_ROBIN/LESS_RECENTLY_USED/... | [poolifier](https://github.com/poolifier/poolifier) default: ROUND_ROBBIN | string | worker threads pool [poolifier](https://github.com/poolifier/poolifier) worker choice strategy
 chargingStationsPerWorker | | 1 | integer | number of charging stations per worker threads for the `workerSet` process type
+logStatisticsInterval | | 60 | integer | seconds between charging stations statistics output in the logs 
 logConsole | true/false | false | boolean | output logs on the console 
 logFormat | | simple | string | winston log format
 logRotate | true/false | true | boolean | enable daily log files rotation
@@ -36,8 +65,20 @@ 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 
-stationTemplateURLs | | {}[] | { file: string; numberOfStations: number; }[] | array of charging template file URIs
+performanceStorage | | { "enabled": false, "type": "jsonfile", "file:///performanceRecords.json" } | { enabled: string; type: string; URI: string; } where type can be 'jsonfile' or 'mongodb' | performance storage configuration section
+stationTemplateURLs | | {}[] | { file: string; numberOfStations: number; }[] | array of charging station templates URIs configuration section (template file name and number of stations)
+
+#### Worker process model: 
+
+- **workerSet**:
+  Worker set executing each a static number (chargingStationsPerWorker) of simulated charging stations from the total
+
+- **staticPool**:
+  Statically sized worker pool executing a static total number of simulated charging stations    
+
+- **dynamicPool**:
+  Dynamically sized worker pool executing a static total number of simulated charging stations 
+
 ### Charging station template
 
 Key | Value(s) | Default Value | Value type | Description 
@@ -77,9 +118,9 @@ meteringPerTransaction | true/false | true | boolean | enable metering history o
 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 configuration parameters
-AutomaticTransactionGenerator | | | AutomaticTransactionGenerator | charging stations ATG configuration
-Connectors | | | Connectors | charging stations connectors configuration
+Configuration | | | ChargingStationConfiguration | charging stations OCPP parameters configuration section
+AutomaticTransactionGenerator | | | AutomaticTransactionGenerator | charging stations ATG configuration section
+Connectors | | | Connectors | charging stations connectors configuration section
 
 #### Configuration section
 
@@ -165,10 +206,10 @@ In the [docker](./docker) folder:
 make
 ```
 
-Or without the optional git submodules:
+Or with the optional git submodules:
 
 ```bash
-make SUBMODULES_INIT=false
+make SUBMODULES_INIT=true
 ```
 
 ## OCPP-J commands supported
@@ -196,7 +237,7 @@ make SUBMODULES_INIT=false
 
 #### Firmware Management Profile
 
-- :x: GetDiagnostics
+- :white_check_mark: GetDiagnostics
 - :x: DiagnosticsStatusNotification
 - :x: FirmwareStatusNotification
 - :x: UpdateFirmware
@@ -219,7 +260,7 @@ make SUBMODULES_INIT=false
 
 #### Remote Trigger Profile
 
-- :x: TriggerMessage
+- :white_check_mark: TriggerMessage
 
 ## OCPP-J standard parameters supported