UI protocol: Allow to send some relevant commands to several charging… (#152)
authorJérôme Benoit <jerome.benoit@sap.com>
Thu, 25 Aug 2022 15:41:37 +0000 (17:41 +0200)
committerGitHub <noreply@github.com>
Thu, 25 Aug 2022 15:41:37 +0000 (17:41 +0200)
.eslintignore [new file with mode: 0644]
README.md
src/charging-station/ChargingStationWorkerBroadcastChannel.ts
src/types/UIProtocol.ts
src/types/WorkerBroadcastChannel.ts
src/ui/web/src/type/UIProtocol.ts

diff --git a/.eslintignore b/.eslintignore
new file mode 100644 (file)
index 0000000..69ef742
--- /dev/null
@@ -0,0 +1 @@
+/src/ui/web/dist
index f59641624e92b696cfbb72730f4ea5531efd34b3..563b2e31b93b1b6c02ee0c9ade597d8b607453da 100644 (file)
--- a/README.md
+++ b/README.md
@@ -450,9 +450,9 @@ Response:
 Request:  
 `ProcedureName`: 'startTransaction'  
 `PDU`: {  
-`hashId`: the unique identifier of a charging station  
-`connectorId`: the id of the connector  
-`idTag`: the RFID tag  
+`hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array,  
+`connectorId`: connector id integer,  
+`idTag`: RFID tag string  
 }
 
 Response:  
@@ -465,8 +465,8 @@ Response:
 Request:  
 `ProcedureName`: 'stopTransaction'  
 `PDU`: {  
-`hashId`: the unique identifier of a charging station  
-`transactionId`: the id of the transaction  
+`hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array,  
+`transactionId`: transaction id integer  
 }
 
 Response:  
@@ -479,7 +479,7 @@ Response:
 Request:  
 `ProcedureName`: 'startChargingStation'  
 `PDU`: {  
-`hashId`: the unique identifier of a charging station  
+`hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array
 }
 
 Response:  
@@ -492,7 +492,7 @@ Response:
 Request:  
 `ProcedureName`: 'stopChargingStation'  
 `PDU`: {  
-`hashId`: the unique identifier of a charging station  
+`hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array  
 }
 
 Response:  
@@ -505,7 +505,7 @@ Response:
 Request:  
 `ProcedureName`: 'openConnection'  
 `PDU`: {  
-`hashId`: the unique identifier of a charging station  
+`hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array  
 }
 
 Response:  
@@ -518,7 +518,7 @@ Response:
 Request:  
 `ProcedureName`: 'closeConnection'  
 `PDU`: {  
-`hashId`: the unique identifier of a charging station  
+`hashId`: charging station unique identifier string (deprecated) | `hashIds`: charging station unique identifier strings array  
 }
 
 Response:  
index 9e88b4189372eaa030de37cfe159e4cdb3a89044..9de2cfb2784dc75965403734ccb97b327d940bed 100644 (file)
@@ -44,9 +44,23 @@ export default class ChargingStationWorkerBroadcastChannel extends WorkerBroadca
 
     const [uuid, command, requestPayload] = messageEvent.data as BroadcastChannelRequest;
 
-    if (requestPayload?.hashId !== this.chargingStation.hashId) {
+    if (
+      requestPayload?.hashId === undefined &&
+      (requestPayload?.hashIds as string[])?.includes(this.chargingStation.hashId) === false
+    ) {
       return;
     }
+    if (
+      requestPayload?.hashIds === undefined &&
+      requestPayload?.hashId !== this.chargingStation.hashId
+    ) {
+      return;
+    }
+    if (requestPayload?.hashId !== undefined) {
+      logger.warn(
+        `${this.chargingStation.logPrefix()} ${moduleName}.requestHandler: 'hashId' field usage in PDU is deprecated, use 'hashIds' instead`
+      );
+    }
 
     let responsePayload: BroadcastChannelResponsePayload;
     let commandResponse: CommandResponse;
index 63bb7ca1a5bc61c90bb99a1b62e598478eefa2da..1939fdd5802120683bc0b6ad701c31a7952d5630 100644 (file)
@@ -35,6 +35,7 @@ export enum ProcedureName {
 
 export interface RequestPayload extends JsonObject {
   hashId?: string;
+  hashIds?: string[];
 }
 
 export enum ResponseStatus {
index 0015b717e7fa97ee78a257efeff85d5b71e7d1f9..0d6da48d8871563122d8ec1e2f70fdd8aa551501 100644 (file)
@@ -16,13 +16,24 @@ export enum BroadcastChannelProcedureName {
   CLOSE_CONNECTION = 'closeConnection',
 }
 
-export interface BroadcastChannelRequestPayload extends Omit<RequestPayload, 'hashId'> {
-  hashId: string;
+interface BaseBroadcastChannelRequestPayload extends Omit<RequestPayload, 'hashId' | 'hashIds'> {
   connectorId?: number;
   transactionId?: number;
   idTag?: string;
 }
 
+interface HashIdBroadcastChannelRequestPayload extends BaseBroadcastChannelRequestPayload {
+  hashId: string;
+}
+
+interface HashIdsBroadcastChannelRequestPayload extends BaseBroadcastChannelRequestPayload {
+  hashIds: string[];
+}
+
+export type BroadcastChannelRequestPayload =
+  | HashIdBroadcastChannelRequestPayload
+  | HashIdsBroadcastChannelRequestPayload;
+
 export type BroadcastChannelResponsePayload = ResponsePayload;
 
 export type MessageEvent = { data: BroadcastChannelRequest | BroadcastChannelResponse };
index b8d40f31a194f1c3ef1a70fe58c527b683ade9f4..23537c3ea0d7637df3e65f2378340a6cf7004e00 100644 (file)
@@ -33,6 +33,7 @@ export enum ProcedureName {
 }
 export interface RequestPayload extends JsonObject {
   hashId?: string;
+  hashIds?: string[];
 }
 
 export enum ResponseStatus {