Release 1.0.3
[e-mobility-charging-stations-simulator.git] / README.md
1 # ev-simulator
2
3 ## Summary
4
5 Simple [node.js](https://nodejs.org/) program to simulate a set of charging stations based on the OCPP-J 1.6 protocol.
6
7 ## Start
8
9 To start the program, run: `npm start`.
10
11 ## Configuration syntax
12
13 All configuration files are in the JSON standard format.
14
15 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).
16
17 All charging station templates are in the directory [src/assets/station-templates](src/assets/station-templates).
18
19 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).
20
21 ### Global configuration
22
23 **src/assets/config.json**:
24
25 Key | Value(s) | Default Value | Value type | Description
26 --- | -------| --------------| ---------- | ------------
27 supervisionURLs | | [] | string[] | array of connection URIs to OCPP-J servers
28 distributeStationsToTenantsEqually | true/false | true | boolean | distribute charging stations uniformly to the OCPP-J servers
29 statisticsDisplayInterval | | 60 | integer | seconds between charging stations statistics output in the logs
30 workerProcess | workerSet/staticPool/dynamicPool | workerSet | string | worker threads process type
31 workerStartDelay | | 500 | integer | milliseconds to wait at charging station worker threads startup
32 workerPoolMinSize | | 4 | integer | worker threads pool minimum number of threads
33 workerPoolMaxSize | | 16 | integer | worker threads pool maximum number of threads
34 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
35 chargingStationsPerWorker | | 1 | integer | number of charging stations per worker threads for the `workerSet` process type
36 logConsole | true/false | false | boolean | output logs on the console
37 logFormat | | simple | string | winston log format
38 logRotate | true/false | true | boolean | enable daily log files rotation
39 logMaxFiles | | 7 | integer | maximum number of log files to keep
40 logLevel | emerg/alert/crit/error/warning/notice/info/debug | info | string | winston logging level
41 logFile | | combined.log | string | log file relative path
42 logErrorFile | | error.log | string | error log file relative path
43 stationTemplateURLs | | {}[] | { file: string; numberOfStations: number; }[] | array of charging template file URIs
44
45 ### Charging station template
46
47 Key | Value(s) | Default Value | Value type | Description
48 --- | -------| --------------| ---------- | ------------
49 supervisionURL | | '' | string | connection URI to OCPP-J server
50 ocppVersion | 1.6 | 1.6 | string | OCPP version
51 ocppProtocol | json | json | string | OCPP protocol
52 authorizationFile | | '' | string | RFID tags list file relative to src/assets path
53 baseName | | '' | string | base name to build charging stations name
54 nameSuffix | | '' | string | name suffix to build charging stations name
55 fixedName | true/false | false | boolean | use the baseName as the charging stations unique name
56 chargePointModel | | '' | string | charging stations model
57 chargePointVendor | | '' | string | charging stations vendor
58 chargeBoxSerialNumberPrefix | | '' | string | charging stations serial number prefix
59 firmwareVersion | | '' | string | charging stations firmware version
60 power | | | integer\|integer[] | charging stations maximum power value(s)
61 powerSharedByConnectors | true/false | false | boolean | charging stations power shared by its connectors
62 powerUnit | W/kW | W | string | charging stations power unit
63 currentOutType | AC/DC | AC | string | charging stations current out type
64 numberOfPhases | 0/1/3 | AC:3/DC:0 | integer | charging stations number of phase(s)
65 numberOfConnectors | | | integer\|integer[] | charging stations number of connector(s)
66 useConnectorId0 | true/false | true | boolean | use connector id 0 definition from the template
67 randomConnectors | true/false | false | boolean | randomize runtime connector id affectation from the connector id definition in template
68 resetTime | | 60 | integer | seconds to wait before the charging stations come back at reset
69 connectionTimeout | | 30 | integer | connection timeout to the OCPP-J server
70 autoReconnectMaxRetries | | -1 (unlimited) | integer | connection retries to the OCPP-J server
71 reconnectExponentialDelay | true/false | false | boolean | connection delay retry to the OCPP-J server
72 registrationMaxRetries | | -1 (unlimited) | integer | charging stations boot notification retries
73 enableStatistics | true/false | true | boolean | enable charging stations statistics
74 voltageOut | | AC:230/DC:400 | integer | charging stations voltage out
75 Configuration | | | ChargingStationConfiguration | charging stations OCPP configuration parameters
76 AutomaticTransactionGenerator | | | AutomaticTransactionGenerator | charging stations ATG configuration
77 Connectors | | | Connectors | charging stations connectors configuration
78
79 #### Configuration section
80
81 ```json
82 "Configuration": {
83 "configurationKey": [
84 ...
85 {
86 "key": "StandardKey",
87 "readonly": false,
88 "value": "StandardValue",
89 "visible": true,
90 "reboot": false
91 },
92 ...
93 {
94 "key": "VendorKey",
95 "readonly": false,
96 "value": "VendorValue",
97 "visible": false,
98 "reboot": true
99 },
100 ...
101 ]
102 }
103 ```
104
105 #### AutomaticTransactionGenerator section
106
107 ```json
108 "AutomaticTransactionGenerator": {
109 "enable": false,
110 "minDuration": 60,
111 "maxDuration": 80,
112 "minDelayBetweenTwoTransactions": 15,
113 "maxDelayBetweenTwoTransactions": 30,
114 "probabilityOfStart": 1,
115 "stopAfterHours": 0.3,
116 "stopOnConnectionFailure": true,
117 "requireAuthorize": false
118 }
119 ```
120 #### Connectors section
121
122 ```json
123 "Connectors": {
124 "0": {},
125 "1": {
126 "bootStatus": "Available",
127 "MeterValues": [
128 ...
129 {
130 "unit": "A",
131 "measurand": "Current.Import"
132 },
133 ...
134 {
135 "unit": "Wh"
136 },
137 ...
138 ]
139 }
140 },
141 ```
142
143 ## OCPP commands
144
145 ### Version 1.6
146
147 TODO
148
149 ## License
150
151 This file and all other files in this repository are licensed under the Apache Software License, v.2 and copyrighted under the copyright in [NOTICE](NOTICE) file, except as noted otherwise in the [LICENSE](LICENSE) file.
152
153 Please note that Docker images can contain other software which may be licensed under different licenses. This LICENSE and NOTICE files are also included in the Docker image. For any usage of built Docker images please make sure to check the licenses of the artifacts contained in the images.