+## UI protocol
+
+Protocol to control the simulator via a Websocket or HTTP server.
+
+### 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`
+ }
+
+##### 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`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array,
+ `connectorId`: connector id integer,
+ `idTag`: RFID tag string
+ }
+
+- Response:
+ `PDU`: {
+ `status`
+ }
+
+##### Stop Transaction
+
+- 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`
+ }
+
+##### Start Charging Station
+
+- Request:
+ `ProcedureName`: 'startChargingStation'
+ `PDU`: {
+ `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array
+ }
+
+- Response:
+ `PDU`: {
+ `status`
+ }
+
+##### Stop Charging Station
+
+- Request:
+ `ProcedureName`: 'stopChargingStation'
+ `PDU`: {
+ `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array
+ }
+
+- Response:
+ `PDU`: {
+ `status`
+ }
+
+##### Open Connection
+
+- Request:
+ `ProcedureName`: 'openConnection'
+ `PDU`: {
+ `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array
+ }
+
+- Response:
+ `PDU`: {
+ `status`
+ }
+
+##### Close Connection
+
+- Request:
+ `ProcedureName`: 'closeConnection'
+ `PDU`: {
+ `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array
+ }
+
+- Response:
+ `PDU`: {
+ `status`
+ }
+
+### HTTP Protocol
+
+A Postman or [Insomnia](https://insomnia.rest/) collection, to learn how to use the HTTP protocol to pilot the simulator, is available.
+