X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=README.md;h=491679850d8849f5248129081b4597bcd3ed32bc;hb=98dc07faaf264c0263d2c8de382efa9db59cd5b4;hp=8e2c63124dcbce2df313316e38cdfdef0eb3a155;hpb=15042c5fdee2d617c1d533699334cbf044f1a97e;p=e-mobility-charging-stations-simulator.git diff --git a/README.md b/README.md index 8e2c6312..49167985 100644 --- 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