Fix exit conditions at startup
[e-mobility-charging-stations-simulator.git] / README.md
index aeb0b87915d6f8be8f0c8a275f9998a7d0049b24..f59641624e92b696cfbb72730f4ea5531efd34b3 100644 (file)
--- a/README.md
+++ b/README.md
@@ -49,8 +49,9 @@ Tweak them to your needs by following the section [configuration files syntax](R
 
 To start the program, run: `npm start`.
 
-To start the program with a UI controller, run: `npm run start:server`.
-Then, start/stop the simulator by going to `https://<hostname:port>` in a browser. Localhost port will default to 8080. For Cloud Foundry, the port is assigned based on the `process.env.PORT` environment variable.
+## Start Web UI
+
+See Web UI [README.md](src/ui/web/README.md) for more information.
 
 ## Configuration files syntax
 
@@ -107,7 +108,7 @@ But the modifications to test have to be done to the files in the build target d
 #### Worker process model:
 
 - **workerSet**:
-  Worker set executing each a static number (chargingStationsPerWorker) of simulated charging stations from the total
+  Worker set executing each a static number (elementsPerWorker) of simulated charging stations from the total
 
 - **staticPool**:
   Statically sized worker pool executing a static total number of simulated charging stations
@@ -159,6 +160,7 @@ But the modifications to test have to be done to the files in the build target d
 | 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                                                                                                                                                   |
 | 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                                                                                                                                                    |
@@ -166,7 +168,7 @@ But the modifications to test have to be done to the files in the build target d
 | mainVoltageMeterValues             | true/false | true                                                              | boolean                                                                                                                            | include charging stations main voltage MeterValues on three phased charging stations                                                                                                                  |
 | phaseLineToLineVoltageMeterValues  | true/false | true                                                              | boolean                                                                                                                            | include charging stations line to line voltage MeterValues on three phased charging stations                                                                                                          |
 | customValueLimitationMeterValues   | true/false | true                                                              | boolean                                                                                                                            | enable limitation on custom fluctuated value in MeterValues                                                                                                                                           |
-| commandsSupport                    |            | {<br />"incomingCommands": {},<br />"outgoingCommands": {}<br />} | {<br /> incomingCommands: Record<IncomingRequestCommand, boolean>;<br />outgoingCommands?: Record<RequestCommand, boolean>;<br />} | Configuration section for OCPP commands support. Empty section means all implemented are supported support                                                                                            |
+| commandsSupport                    |            | {<br />"incomingCommands": {},<br />"outgoingCommands": {}<br />} | {<br /> incomingCommands: Record<IncomingRequestCommand, boolean>;<br />outgoingCommands?: Record<RequestCommand, boolean>;<br />} | Configuration section for OCPP commands support. Empty section or subsections means all implemented commands are supported                                                                            |
 | Configuration                      |            |                                                                   | ChargingStationConfiguration                                                                                                       | charging stations OCPP parameters configuration section                                                                                                                                               |
 | AutomaticTransactionGenerator      |            |                                                                   | AutomaticTransactionGenerator                                                                                                      | charging stations ATG configuration section                                                                                                                                                           |
 | Connectors                         |            |                                                                   | Connectors                                                                                                                         | charging stations connectors configuration section                                                                                                                                                    |
@@ -380,6 +382,150 @@ All kind of OCPP parameters are supported in a charging station configuration or
 
 - _none_
 
+## UI protocol
+
+Protocol to control the simulator via a 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 HTTP header _Sec-Websocket-Protocol_ to `ui0.0.1`
+
+#### Procedures
+
+##### Start Simulator
+
+Request:  
+`ProcedureName`: 'startSimulator'  
+`PDU`: {}
+
+Response:  
+`PDU`: {  
+`status`  
+}
+
+##### Stop Simulator
+
+Request:  
+`ProcedureName`: 'stopSimulator'  
+`PDU`: {}
+
+Response:  
+`PDU`: {  
+`status`  
+}
+
+##### List Charging Stations
+
+Request:  
+`ProcedureName`: 'listChargingStations'  
+`PDU`: {}
+
+Response:  
+`PDU`: {  
+`status`,  
+`index`: ChargingStationData,  
+...  
+`index`: ChargingStationData  
+}
+
+##### Start Transaction
+
+Request:  
+`ProcedureName`: 'startTransaction'  
+`PDU`: {  
+`hashId`: the unique identifier of a charging station  
+`connectorId`: the id of the connector  
+`idTag`: the RFID tag  
+}
+
+Response:  
+`PDU`: {  
+`status`  
+}
+
+##### Stop Transaction
+
+Request:  
+`ProcedureName`: 'stopTransaction'  
+`PDU`: {  
+`hashId`: the unique identifier of a charging station  
+`transactionId`: the id of the transaction  
+}
+
+Response:  
+`PDU`: {  
+`status`  
+}
+
+##### Start Charging Station
+
+Request:  
+`ProcedureName`: 'startChargingStation'  
+`PDU`: {  
+`hashId`: the unique identifier of a charging station  
+}
+
+Response:  
+`PDU`: {  
+`status`  
+}
+
+##### Stop Charging Station
+
+Request:  
+`ProcedureName`: 'stopChargingStation'  
+`PDU`: {  
+`hashId`: the unique identifier of a charging station  
+}
+
+Response:  
+`PDU`: {  
+`status`  
+}
+
+##### Open Connection
+
+Request:  
+`ProcedureName`: 'openConnection'  
+`PDU`: {  
+`hashId`: the unique identifier of a charging station  
+}
+
+Response:  
+`PDU`: {  
+`status`  
+}
+
+##### Close Connection
+
+Request:  
+`ProcedureName`: 'closeConnection'  
+`PDU`: {  
+`hashId`: the unique identifier of a charging station  
+}
+
+Response:  
+`PDU`: {  
+`status`  
+}
+
 ## Support, Feedback, Contributing
 
 This project is open to feature requests/suggestions, bug reports etc. via [GitHub issues](https://github.com/SAP/e-mobility-charging-stations-simulator/issues). Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](CONTRIBUTING.md).