README.md: Fix sections hierarchy
[e-mobility-charging-stations-simulator.git] / README.md
index a4103c0ee5c7e9d4f2f82b3c6642820610498293..3c4a77a7eb28c4831a0848953d267c6535e018b9 100644 (file)
--- a/README.md
+++ b/README.md
@@ -51,6 +51,8 @@ To start the program, run: `npm start`.
 
 ## Start Web UI
 
+See Web UI [README.md](src/ui/web/README.md) for more information.
+
 ## Configuration files syntax
 
 All configuration files are in the JSON standard format.
@@ -99,7 +101,7 @@ But the modifications to test have to be done to the files in the build target d
 | logFile                    |                                                  | combined.log                                                                                                                                                                                                   | string                                                                                                                                                                                                                              | log file relative path                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
 | logErrorFile               |                                                  | error.log                                                                                                                                                                                                      | string                                                                                                                                                                                                                              | error log file relative path                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
 | worker                     |                                                  | {<br />"processType": "workerSet",<br />"startDelay": 500,<br />"elementStartDelay": 0,<br />"elementsPerWorker": 1,<br />"poolMinSize": 4,<br />"poolMaxSize": 16,<br />"poolStrategy": "ROUND_ROBBIN"<br />} | {<br />processType: WorkerProcessType;<br />startDelay: number;<br />elementStartDelay: number;<br />elementsPerWorker: number;<br />poolMinSize: number;<br />poolMaxSize: number;<br />poolStrategy: WorkerChoiceStrategy;<br />} | Worker configuration section:<br />- processType: worker threads process type (workerSet/staticPool/dynamicPool)<br />- startDelay: milliseconds to wait at worker threads startup (only for workerSet threads process type)<br />- elementStartDelay: milliseconds to wait at charging station startup<br />- elementsPerWorker: number of charging stations per worker threads for the `workerSet` process type<br />- poolMinSize: worker threads pool minimum number of threads</br >- poolMaxSize: worker threads pool maximum number of threads<br />- poolStrategy: worker threads pool [poolifier](https://github.com/poolifier/poolifier) worker choice strategy |
-| uiServer                   |                                                  | {<br />"enabled": true,<br />"options": {<br />"host: "localhost",<br />"port": 8080<br />}<br />}                                                                                                             | {<br />enabled: boolean;<br />options: ServerOptions;<br />}                                                                                                                                                                        | UI WebSocket server configuration section                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
+| uiServer                   |                                                  | {<br />"enabled": true,<br />"type": "ws",<br />"options": {<br />"host: "localhost",<br />"port": 8080<br />}<br />}                                                                                          | {<br />enabled: boolean;<br />type: ApplicationProtocol;<br />options: ServerOptions;<br />}                                                                                                                                        | UI server configuration section                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
 | performanceStorage         |                                                  | {<br />"enabled": false,<br />"type": "jsonfile",<br />"file:///performanceRecords.json"<br />}                                                                                                                | {<br />enabled: boolean;<br />type: string;<br />URI: string;<br />}<br />where type can be 'jsonfile' or 'mongodb'                                                                                                                 | performance storage configuration section                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
 | stationTemplateUrls        |                                                  | {}[]                                                                                                                                                                                                           | {<br />file: string;<br />numberOfStations: number;<br />}[]                                                                                                                                                                        | array of charging station configuration templates URIs configuration section (charging station configuration template file name and number of stations)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
 
@@ -157,8 +159,8 @@ But the modifications to test have to be done to the files in the build target d
 | amperageLimitationOcppKey          |            | undefined                                                         | string                                                                                                                             | charging stations OCPP parameter key used to set the amperage limit, per phase for each connector on AC and global for DC                                                                             |
 | amperageLimitationUnit             | A/cA/dA/mA | A                                                                 | string                                                                                                                             | charging stations amperage limit unit                                                                                                                                                                 |
 | 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                                                                                                           |
-| payloadSchemaValidation            | true/false | true                                                              | boolean                                                                                                                            | validate OCPP commands PDU against OCA JSON schemas                                                                                                                                                   |
+| mustAuthorizeAtRemoteStart         | true/false | true                                                              | boolean                                                                                                                            | always send authorize at remote start transaction when AuthorizeRemoteTxRequests is enabled                                                                                                           |
+| payloadSchemaValidation            | true/false | true                                                              | boolean                                                                                                                            | validate OCPP commands PDU against [OCA](https://www.openchargealliance.org/) JSON schemas                                                                                                            |
 | beginEndMeterValues                | true/false | false                                                             | boolean                                                                                                                            | enable Transaction.{Begin,End} MeterValues                                                                                                                                                            |
 | 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                                                                                                                                                    |
@@ -382,99 +384,149 @@ All kind of OCPP parameters are supported in a charging station configuration or
 
 ## UI protocol
 
-Protocol to control the simulator via a Websocket
+Protocol to control the simulator via a Websocket or HTTP server.
+
+### HTTP Protocol
+
+A Postman or [Insomnia](https://insomnia.rest/) collection, to learn how to use the HTTP protocol to pilot the simulator, is available in [src/assets](./src/assets/) directory.
+
+### WebSocket Protocol
+
+PDU stands for Protocol Data Unit.
+
+- Request:  
+  [`uuid`, `ProcedureName`, `PDU`]  
+  `uuid`: String uniquely representing this request  
+  `ProcedureName`: The procedure to run on the simulator  
+  `PDU`: The parameters for said procedure
+
+- Response:  
+  [`uuid`, `PDU`]  
+  `uuid`: String uniquely linking the response to the request  
+  `PDU`: Response data to requested procedure
+
+#### Version 0.0.1
+
+Set the WebSocket header _Sec-Websocket-Protocol_ to `ui0.0.1`.
+
+##### Procedures
+
+###### Start Simulator
+
+- Request:  
+  `ProcedureName`: 'startSimulator'  
+  `PDU`: {}
+
+- Response:  
+  `PDU`: {  
+  `status`  
+  }
 
-### Protocol
+###### Stop Simulator
 
-PDU stands for Protocol Data Unit
+- Request:  
+  `ProcedureName`: 'stopSimulator'  
+  `PDU`: {}
 
-Request:
-[`uuid`, `ProcedureName`, `PDU`]
+- Response:  
+  `PDU`: {  
+  `status`  
+  }
 
-`uuid`: String uniquely representing this request
-`ProcedureName`: The procedure to run on the simulator
-`PDU`: The parameters (if any) for said procedure
+###### List Charging Stations
 
-Response:
-[`uuid`, `PDU`]
+- Request:  
+  `ProcedureName`: 'listChargingStations'  
+  `PDU`: {}
 
-`uuid`: String uniquely linking the response to the request
-`PDU`: Response data to requested procedure
+- Response:  
+  `PDU`: {  
+  `status`,  
+  `index`: ChargingStationData,  
+  ...  
+  `index`: ChargingStationData  
+  }
 
-### Version 0.0.1
+###### Start Transaction
 
-Set the HTTP header _Sec-Websocket-Protocol_ to `ui0.0.1`
+- Request:  
+  `ProcedureName`: 'startTransaction'  
+  `PDU`: {  
+  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array,  
+  `connectorId`: connector id integer,  
+  `idTag`: RFID tag string  
+  }
 
-#### Procedures
+- Response:  
+  `PDU`: {  
+  `status`  
+  }
 
-##### List Charging stations
+###### Stop Transaction
 
-Request:
-`ProcedureName`: 'listChargingStations'
-`PDU`: {}
+- Request:  
+  `ProcedureName`: 'stopTransaction'  
+  `PDU`: {  
+  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array,  
+  `transactionId`: transaction id integer  
+  }
 
-Response:
-`PDU`: {
-`status`,
-`index`: ChargingStationData,
-...
-`index`: ChargingStationData
-}
+- Response:  
+  `PDU`: {  
+  `status`  
+  }
 
-##### Start Transaction
+###### Start Charging Station
 
-Request:
-`ProcedureName`: 'startTransaction'
-`PDU`: {
-`hashId`: the unique identifier of a charging station
-`connectorId`: the id of the connector (start at 1)
-`idTag`: An allowed badge authetification ID
-}
+- Request:  
+  `ProcedureName`: 'startChargingStation'  
+  `PDU`: {  
+  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array  
+  }
 
-Response:
-`PDU`: {
-`status`
-}
+- Response:  
+  `PDU`: {  
+  `status`  
+  }
 
-##### Stop Transaction
+###### Stop Charging Station
 
-Request:
-`ProcedureName`: 'stopTransaction'
-`PDU`: {
-`hashId`: the unique identifier of a charging station
-`transactionId`: the id of the transaction
-}
+- Request:  
+  `ProcedureName`: 'stopChargingStation'  
+  `PDU`: {  
+  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array  
+  }
 
-Response:
-`PDU`: {
-`status`
-}
+- Response:  
+  `PDU`: {  
+  `status`  
+  }
 
-##### Start Charging Station
+###### Open Connection
 
-Request:
-`ProcedureName`: 'startChargingStation'
-`PDU`: {
-`hashId`: the unique identifier of a charging station
-}
+- Request:  
+  `ProcedureName`: 'openConnection'  
+  `PDU`: {  
+  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array  
+  }
 
-Response:
-`PDU`: {
-`status`
-}
+- Response:  
+  `PDU`: {  
+  `status`  
+  }
 
-##### Stop Charging Station
+###### Close Connection
 
-Request:
-`ProcedureName`: 'stopChargingStation'
-`PDU`: {
-`hashId`: the unique identifier of a charging station
-}
+- Request:  
+  `ProcedureName`: 'closeConnection'  
+  `PDU`: {  
+  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array  
+  }
 
-Response:
-`PDU`: {
-`status`
-}
+- Response:  
+  `PDU`: {  
+  `status`  
+  }
 
 ## Support, Feedback, Contributing