X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=README.md;h=29bf46dd9c96c11ab77fced223a91f76ddad70b9;hb=672fed6e70e94e37ba8db689d8517f42ae0f4477;hp=95c44eb900e7c083796f4e8e581819e3b9e79208;hpb=802cfa135dad14f8b15401685c3429395cb3e6e1;p=e-mobility-charging-stations-simulator.git diff --git a/README.md b/README.md index 95c44eb9..29bf46dd 100644 --- a/README.md +++ b/README.md @@ -4,24 +4,53 @@ 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. + +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. -### Global configuration +### Main configuration **src/assets/config.json**: 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 +supervisionUrls | | [] | string \| string[] | string or array of global connection URIs to OCPP-J servers +supervisionUrlDistribution | round-robin/random/sequential | round-robin | boolean | supervision urls distribution policy to simulated charging stations 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 @@ -35,9 +64,10 @@ logRotate | true/false | true | boolean | enable daily log files rotation 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 -performanceStorage | | { "enabled": false, "type": "jsonfile", "file:///performanceMeasurements.json" } | { enabled: string; type: string; URI: string; } where type can be 'jsonfile', 'mysql', 'mariadb', 'sqlite' 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) +logErrorFile | | error.log | string | error log file relative path +uiWebSocketServer | | { "enabled": true, "options": { "host: "localhost", "port": 8080 } } | { enabled: boolean; options: ServerOptions; } | UI WebSocket server configuration section +performanceStorage | | { "enabled": false, "type": "jsonfile", "file:///performanceRecords.json" } | { enabled: boolean; 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: @@ -54,11 +84,15 @@ stationTemplateURLs | | {}[] | { file: string; numberOfStations: number; }[] | a Key | Value(s) | Default Value | Value type | Description --- | -------| --------------| ---------- | ------------ -supervisionURL | | '' | string | connection URI to OCPP-J server +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 | true | boolean | Strict adherence to the OCPP version and protocol specifications +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 @@ -84,7 +118,7 @@ registrationMaxRetries | | -1 (unlimited) | integer | charging stations boot not 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 +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 @@ -177,10 +211,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 @@ -209,7 +243,7 @@ make SUBMODULES_INIT=false #### Firmware Management Profile - :white_check_mark: GetDiagnostics -- :x: DiagnosticsStatusNotification +- :white_check_mark: DiagnosticsStatusNotification - :x: FirmwareStatusNotification - :x: UpdateFirmware