Web UI: add start/stop ATG command
authorJérôme Benoit <jerome.benoit@sap.com>
Wed, 31 Aug 2022 21:28:15 +0000 (23:28 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Wed, 31 Aug 2022 21:28:15 +0000 (23:28 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
README.md
src/charging-station/ChargingStationWorkerBroadcastChannel.ts
src/types/UIProtocol.ts
src/types/WorkerBroadcastChannel.ts
src/ui/web/src/components/charging-stations/CSConnector.vue
src/ui/web/src/composables/UIClient.ts
src/ui/web/src/types/UIProtocol.ts

index 855e13db05ec966089f4753206419719b27e12a2..e9ba6a77b7560b5b7fb6740000871509a79bf438 100644 (file)
--- a/README.md
+++ b/README.md
@@ -452,7 +452,7 @@ Set the WebSocket 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,  
+  `hashIds`: charging station unique identifier strings array,  
   `connectorId`: connector id integer,  
   `idTag`: RFID tag string  
   }
@@ -467,7 +467,7 @@ Set the WebSocket header _Sec-Websocket-Protocol_ to `ui0.0.1`.
 - Request:  
   `ProcedureName`: 'stopTransaction'  
   `PDU`: {  
-  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array,  
+  `hashIds`: charging station unique identifier strings array,  
   `transactionId`: transaction id integer  
   }
 
@@ -481,7 +481,7 @@ Set the WebSocket header _Sec-Websocket-Protocol_ to `ui0.0.1`.
 - Request:  
   `ProcedureName`: 'startChargingStation'  
   `PDU`: {  
-  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array  
+  `hashIds`: charging station unique identifier strings array  
   }
 
 - Response:  
@@ -494,7 +494,7 @@ Set the WebSocket header _Sec-Websocket-Protocol_ to `ui0.0.1`.
 - Request:  
   `ProcedureName`: 'stopChargingStation'  
   `PDU`: {  
-  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array  
+  `hashIds`: charging station unique identifier strings array  
   }
 
 - Response:  
@@ -507,7 +507,7 @@ Set the WebSocket header _Sec-Websocket-Protocol_ to `ui0.0.1`.
 - Request:  
   `ProcedureName`: 'openConnection'  
   `PDU`: {  
-  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array  
+  `hashIds`: charging station unique identifier strings array  
   }
 
 - Response:  
@@ -520,7 +520,7 @@ Set the WebSocket header _Sec-Websocket-Protocol_ to `ui0.0.1`.
 - Request:  
   `ProcedureName`: 'closeConnection'  
   `PDU`: {  
-  `hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array  
+  `hashIds`: charging station unique identifier strings array  
   }
 
 - Response:  
index 159743a049104cd3d9d210b6a799c374c7614aa7..714bf0f931d67091029f25a6ce7d2c3bf8c9948e 100644 (file)
@@ -44,8 +44,7 @@ export default class ChargingStationWorkerBroadcastChannel extends WorkerBroadca
 
     if (
       requestPayload?.hashId === undefined &&
-      (requestPayload?.hashIds as string[])?.includes(this.chargingStation.stationInfo.hashId) ===
-        false
+      requestPayload?.hashIds?.includes(this.chargingStation.stationInfo.hashId) === false
     ) {
       return;
     }
index 3906512d2240470317bc094caec64a3de9949f69..f120f9c9e4dcf3fb5b5be68f8fe7ae762a0f235e 100644 (file)
@@ -36,8 +36,8 @@ export enum ProcedureName {
 }
 
 export interface RequestPayload extends JsonObject {
-  hashId?: string;
   hashIds?: string[];
+  connectorIds?: number[];
 }
 
 export enum ResponseStatus {
index 2cc18943cfbe11019dec4115acf8ad21138f5dc5..03be12fde78330fa7a88bb6e04b964466d910f6e 100644 (file)
@@ -25,17 +25,11 @@ interface BaseBroadcastChannelRequestPayload extends Omit<RequestPayload, 'hashI
   idTag?: string;
 }
 
-interface HashIdBroadcastChannelRequestPayload extends BaseBroadcastChannelRequestPayload {
-  hashId: string;
-}
-
 interface HashIdsBroadcastChannelRequestPayload extends BaseBroadcastChannelRequestPayload {
   hashIds: string[];
 }
 
-export type BroadcastChannelRequestPayload =
-  | HashIdBroadcastChannelRequestPayload
-  | HashIdsBroadcastChannelRequestPayload;
+export type BroadcastChannelRequestPayload = HashIdsBroadcastChannelRequestPayload;
 
 export interface BroadcastChannelResponsePayload extends ResponsePayload {
   hashId: string;
index d716d2dfde853db8123c57792f3ad5abd0e69f46..99ae1b9c74ef1db1f4ee1bf8a590a02e4acdb895 100644 (file)
@@ -14,6 +14,8 @@
       Start Transaction
     </IdTagInputModal> -->
     <Button @click="stopTransaction()">Stop Transaction</Button>
+    <Button @click="startAutomaticTransactionGenerator()">Start ATG</Button>
+    <Button @click="stopAutomaticTransactionGenerator()">Stop ATG</Button>
   </td>
   <td class="cs-table__connector-col">{{ connectorId }}</td>
   <td class="cs-table__status-col">{{ connector.status }}</td>
@@ -79,4 +81,10 @@ function startTransaction(): void {
 function stopTransaction(): void {
   UIClient.getInstance().stopTransaction(props.hashId, props.transactionId);
 }
+function startAutomaticTransactionGenerator(): void {
+  UIClient.getInstance().startAutomaticTransactionGenerator(props.hashId, props.connectorId);
+}
+function stopAutomaticTransactionGenerator(): void {
+  UIClient.getInstance().stopAutomaticTransactionGenerator(props.hashId, props.connectorId);
+}
 </script>
index 275e30e9f8519111cc726e6e171558e900d6048b..556e9bb7c4e4b458ecfaaa4499a6f32d9f9e713c 100644 (file)
@@ -1,5 +1,4 @@
-import type { JsonType } from '@/types/JsonType';
-import { ProcedureName, ResponseStatus } from '@/types/UIProtocol';
+import { ProcedureName, ResponseStatus, type RequestPayload } from '@/types/UIProtocol';
 import type { ProtocolResponse, ResponsePayload } from '@/types/UIProtocol';
 
 import Utils from './Utils';
@@ -47,22 +46,22 @@ export default class UIClient {
   }
 
   public async startChargingStation(hashId: string): Promise<ResponsePayload> {
-    return this.sendRequest(ProcedureName.START_CHARGING_STATION, { hashId });
+    return this.sendRequest(ProcedureName.START_CHARGING_STATION, { hashIds: [hashId] });
   }
 
   public async stopChargingStation(hashId: string): Promise<ResponsePayload> {
-    return this.sendRequest(ProcedureName.STOP_CHARGING_STATION, { hashId });
+    return this.sendRequest(ProcedureName.STOP_CHARGING_STATION, { hashIds: [hashId] });
   }
 
   public async openConnection(hashId: string): Promise<ResponsePayload> {
     return this.sendRequest(ProcedureName.OPEN_CONNECTION, {
-      hashId,
+      hashIds: [hashId],
     });
   }
 
   public async closeConnection(hashId: string): Promise<ResponsePayload> {
     return this.sendRequest(ProcedureName.CLOSE_CONNECTION, {
-      hashId,
+      hashIds: [hashId],
     });
   }
 
@@ -72,7 +71,7 @@ export default class UIClient {
     idTag: string | undefined
   ): Promise<ResponsePayload> {
     return this.sendRequest(ProcedureName.START_TRANSACTION, {
-      hashId,
+      hashIds: [hashId],
       connectorId,
       idTag,
     });
@@ -83,11 +82,31 @@ export default class UIClient {
     transactionId: number | undefined
   ): Promise<ResponsePayload> {
     return this.sendRequest(ProcedureName.STOP_TRANSACTION, {
-      hashId,
+      hashIds: [hashId],
       transactionId,
     });
   }
 
+  public async startAutomaticTransactionGenerator(
+    hashId: string,
+    connectorId: number
+  ): Promise<ResponsePayload> {
+    return this.sendRequest(ProcedureName.START_AUTOMATIC_TRANSACTION_GENERATOR, {
+      hashIds: [hashId],
+      connectorIds: [connectorId],
+    });
+  }
+
+  public async stopAutomaticTransactionGenerator(
+    hashId: string,
+    connectorId: number
+  ): Promise<ResponsePayload> {
+    return this.sendRequest(ProcedureName.STOP_AUTOMATIC_TRANSACTION_GENERATOR, {
+      hashIds: [hashId],
+      connectorIds: [connectorId],
+    });
+  }
+
   private openWS(): void {
     this._ws = new WebSocket(
       `ws://${config.uiServer.host}:${config.uiServer.port}`,
@@ -119,7 +138,10 @@ export default class UIClient {
     return this._responseHandlers.delete(id);
   }
 
-  private async sendRequest(command: ProcedureName, data: JsonType): Promise<ResponsePayload> {
+  private async sendRequest(
+    command: ProcedureName,
+    data: RequestPayload
+  ): Promise<ResponsePayload> {
     let uuid: string;
     return Utils.promiseWithTimeout(
       new Promise((resolve, reject) => {
index 22871d688b42d400648ec63000d0ccd9efd3b52b..f3a9d072a80cfd462e4fbbe813dbb364591f2da7 100644 (file)
@@ -21,19 +21,22 @@ export type ProtocolRequestHandler = (
 ) => ResponsePayload | Promise<ResponsePayload>;
 
 export enum ProcedureName {
+  START_SIMULATOR = 'startSimulator',
+  STOP_SIMULATOR = 'stopSimulator',
   LIST_CHARGING_STATIONS = 'listChargingStations',
   START_CHARGING_STATION = 'startChargingStation',
   STOP_CHARGING_STATION = 'stopChargingStation',
-  START_TRANSACTION = 'startTransaction',
-  STOP_TRANSACTION = 'stopTransaction',
-  START_SIMULATOR = 'startSimulator',
-  STOP_SIMULATOR = 'stopSimulator',
   OPEN_CONNECTION = 'openConnection',
   CLOSE_CONNECTION = 'closeConnection',
+  START_TRANSACTION = 'startTransaction',
+  STOP_TRANSACTION = 'stopTransaction',
+  START_AUTOMATIC_TRANSACTION_GENERATOR = 'startAutomaticTransactionGenerator',
+  STOP_AUTOMATIC_TRANSACTION_GENERATOR = 'stopAutomaticTransactionGenerator',
 }
 export interface RequestPayload extends JsonObject {
-  hashId?: string;
   hashIds?: string[];
+  connectorId?: number;
+  connectorIds?: number[];
 }
 
 export enum ResponseStatus {