README.md: add initial documentation on more complex cs template section
[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 workerPoolMinSize | | 4 | integer | worker threads pool minimum number of threads
32 workerPoolMaxSize | | 16 | integer | worker threads pool maximum number of threads
33 chargingStationsPerWorker | | 1 | integer | number of charging stations per worker threads for the `workerSet` process type
34 logConsole | true/false | false | boolean | output logs on the console
35 logFormat | | simple | string | winston log format
36 logRotate | true/false | true | boolean | enable daily log files rotation
37 logMaxFiles | | 7 | integer | maximum number of files to keep
38 logLevel | emerg/alert/crit/error/warning/notice/info/debug | info | string | winston logging level
39 logFile | | combined.log | string | log file relative path
40 logErrorFile | | error.log | string | error log file relative path
41 stationTemplateURLs | | {}[] | { file: string; numberOfStations: number; }[] | array of charging template file URIs
42
43 ### Charging station template
44
45 Key | Value(s) | Default Value | Value type | Description
46 --- | -------| --------------| ---------- | ------------
47 supervisionURL | | '' | string | connection URI to OCPP-J server
48 ocppVersion | 1.6 | 1.6 | string | OCPP version
49 ocppProtocol | json | json | string | OCPP protocol
50 authorizationFile | | '' | string | RFID tags list file relative to src/assets path
51 baseName | | '' | string | base name to build charging stations name
52 nameSuffix | | '' | string | name suffix to build charging stations name
53 fixedName | true/false | false | boolean | use the baseName as the charging stations unique name
54 chargePointModel | | '' | string | charging stations model
55 chargePointVendor | | '' | string | charging stations vendor
56 chargeBoxSerialNumberPrefix | | '' | string | charging stations serial number prefix
57 firmwareVersion | | '' | string | charging stations firmware version
58 power | | | integer\|integer[] | charging stations maximum power value(s)
59 powerSharedByConnectors | true/false | false | boolean | charging stations power shared by its connectors
60 powerUnit | W/kW | W | string | charging stations power unit
61 currentOutType | AC/DC | AC | string | charging stations current out type
62 numberOfPhases | 0/1/3 | AC:3/DC:0 | integer | charging stations number of phase(s)
63 numberOfConnectors | | | integer\|integer[] | charging stations number of connector(s)
64 useConnectorId0 | true/false | true | boolean | use connector id 0 definition from the template
65 randomConnectors | true/false | false | boolean | randomize the connector id
66 resetTime | | 60 | integer | seconds to wait before the charging stations come back at reset
67 connectionTimeout | | 30 | integer | connection timeout to the OCPP-J server
68 autoReconnectMaxRetries | | -1 (unlimited) | integer | connection retries to the OCPP-J server
69 reconnectExponentialDelay | true/false | false | boolean | connection delay retry to the OCPP-J server
70 registrationMaxRetries | | -1 (unlimited) | integer | charging stations boot notification retries
71 enableStatistics | true/false | true | boolean | enable charging stations statistics
72 voltageOut | | AC:230/DC:400 | integer | charging stations voltage out
73 Configuration | | | ChargingStationConfiguration | charging stations OCPP configuration parameters
74 AutomaticTransactionGenerator | | | AutomaticTransactionGenerator | charging stations ATG configuration
75 Connectors | | | Connectors | charging stations connectors configuration
76
77 #### Configuration section
78
79 ```json
80 "Configuration": {
81 "configurationKey": [
82 ...
83 {
84 "key": "StandardKey",
85 "readonly": false,
86 "value": "StandardValue",
87 "visible": true,
88 "reboot": false
89 },
90 ...
91 {
92 "key": "VendorKey",
93 "readonly": false,
94 "value": "VendorValue",
95 "visible": false,
96 "reboot": true
97 },
98 ...
99 ]
100 }
101 ```
102
103 #### AutomaticTransactionGenerator section
104
105 ```json
106 "AutomaticTransactionGenerator": {
107 "enable": false,
108 "minDuration": 60,
109 "maxDuration": 80,
110 "minDelayBetweenTwoTransactions": 15,
111 "maxDelayBetweenTwoTransactions": 30,
112 "probabilityOfStart": 1,
113 "stopAfterHours": 0.3,
114 "stopOnConnectionFailure": true,
115 "requireAuthorize": false
116 }
117 ```
118 #### Connectors section
119
120 ```json
121 "Connectors": {
122 "0": {},
123 "1": {
124 "bootStatus": "Available",
125 "MeterValues": [
126 ...
127 {
128 "unit": "A",
129 "measurand": "Current.Import"
130 },
131 ...
132 {
133 "unit": "Wh"
134 },
135 ...
136 ]
137 }
138 },
139 ```
140
141 ## OCPP commands
142
143 ### Version 1.6
144
145 TODO
146
147 ## License
148
149 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.
150
151 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.