Push down more tunables in charging station template.
authorJérôme Benoit <jerome.benoit@sap.com>
Mon, 23 Nov 2020 09:06:01 +0000 (10:06 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Mon, 23 Nov 2020 09:06:01 +0000 (10:06 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
docker/config.json
src/assets/config-template.json
src/charging-station/ChargingStation.ts
src/types/ChargingStationTemplate.ts
src/utils/Configuration.ts

index 7dcbd0b174bea90dc7079899570d501f50470cc2..edd0da85f48f30bd2f2b7ef2054e8d5325b25808 100644 (file)
@@ -2,10 +2,8 @@
   "supervisionURLs": [
     "ws://server:8010/OCPP16/5c866e81a2d9593de43efdb4"
   ],
-  "statisticsDisplayInterval": 60,
-  "connectionTimeout": 10,
-  "autoReconnectMaxRetries": 10,
   "distributeStationsToTenantsEqually": true,
+  "statisticsDisplayInterval": 60,
   "useWorkerPool": false,
   "workerPoolSize": 16,
   "stationTemplateURLs": [
index 7b3dc1482751fbd77357eb49d8aad924fceb5f53..adfe80ef5510346c4941f4415ae13961d9f175f7 100644 (file)
@@ -2,10 +2,8 @@
   "supervisionURLs": [
     "ws://localhost:8010/OCPP16/5be7fb271014d90008992f06"
   ],
-  "connectionTimeout": 10,
-  "autoReconnectMaxRetries": 10,
-  "statisticsDisplayInterval": 60,
   "distributeStationsToTenantsEqually": true,
+  "statisticsDisplayInterval": 60,
   "useWorkerPool": false,
   "workerPoolSize": 16,
   "stationTemplateURLs": [
index b63bd2c20ec15d96eb15a6b86512522b2855cd6a..1bf867cb304b0361a0e872b61c3b8ee9adfdf717 100644 (file)
@@ -63,9 +63,7 @@ export default class ChargingStation {
 
     this._hasStopped = false;
     this._hasSocketRestarted = false;
-    this._connectionTimeout = Configuration.getConnectionTimeout() * 1000; // Ms, zero for disabling
     this._autoReconnectRetryCount = 0;
-    this._autoReconnectMaxRetries = Configuration.getAutoReconnectMaxRetries(); // -1 for unlimited
 
     this._requests = {} as Requests;
     this._messageQueue = [] as string[];
@@ -115,6 +113,8 @@ export default class ChargingStation {
     this._configuration = this._getTemplateChargingStationConfiguration();
     this._supervisionUrl = this._getSupervisionURL();
     this._wsConnectionUrl = this._supervisionUrl + '/' + this._stationInfo.name;
+    this._connectionTimeout = this._getConnectionTimeout() * 1000; // Ms, zero for disabling
+    this._autoReconnectMaxRetries = this._getAutoReconnectMaxRetries(); // -1 for unlimited
     // Build connectors if needed
     const maxConnectors = this._getMaxNumberOfConnectors();
     if (maxConnectors <= 0) {
@@ -244,6 +244,26 @@ export default class ChargingStation {
     return trxCount;
   }
 
+  _getConnectionTimeout(): number {
+    if (!Utils.isUndefined(this._stationInfo.connectionTimeout)) {
+      return this._stationInfo.connectionTimeout;
+    }
+    if (!Utils.isUndefined(Configuration.getConnectionTimeout())) {
+      return Configuration.getConnectionTimeout();
+    }
+    return 30;
+  }
+
+  _getAutoReconnectMaxRetries(): number {
+    if (!Utils.isUndefined(this._stationInfo.autoReconnectMaxRetries)) {
+      return this._stationInfo.autoReconnectMaxRetries;
+    }
+    if (!Utils.isUndefined(Configuration.getAutoReconnectMaxRetries())) {
+      return Configuration.getAutoReconnectMaxRetries();
+    }
+    return -1;
+  }
+
   _getPowerDivider(): number {
     let powerDivider = this._getNumberOfConnectors();
     if (this._stationInfo.powerSharedByConnectors) {
@@ -395,7 +415,7 @@ export default class ChargingStation {
     if (webSocketPingInterval > 0 && !this._webSocketPingSetInterval) {
       this._webSocketPingSetInterval = setInterval(() => {
         if (this._wsConnection?.readyState === WebSocket.OPEN) {
-          this._wsConnection.ping((): void => {});
+          this._wsConnection.ping((): void => { });
         }
       }, webSocketPingInterval * 1000);
       logger.info(this._logPrefix() + ' WebSocket ping started every ' + Utils.secondsToHHMMSS(webSocketPingInterval));
@@ -564,7 +584,7 @@ export default class ChargingStation {
       logger.error(`${this._logPrefix()} Socket: connection retry in ${Utils.roundTo(reconnectDelay, 2)}ms, timeout ${reconnectDelay - 100}ms`);
       await Utils.sleep(reconnectDelay);
       logger.error(this._logPrefix() + ' Socket: reconnecting try #' + this._autoReconnectRetryCount.toString());
-      this._openWSConnection({ handshakeTimeout : reconnectDelay - 100 });
+      this._openWSConnection({ handshakeTimeout: reconnectDelay - 100 });
     } else if (this._autoReconnectMaxRetries !== -1) {
       logger.error(`${this._logPrefix()} Socket: max retries reached (${this._autoReconnectRetryCount}) or retry disabled (${this._autoReconnectMaxRetries})`);
     }
index 5c2081db19589ee7449c8b3fe2bc7aee8ffe4a13..59eebc40c805ebfc7ba609c68c92cbae5278f599 100644 (file)
@@ -40,6 +40,8 @@ export default interface ChargingStationTemplate {
   useConnectorId0?: boolean;
   randomConnectors?: boolean;
   resetTime?: number;
+  connectionTimeout?: number;
+  autoReconnectMaxRetries?: number;
   reconnectExponentialDelay?: boolean;
   enableStatistics?: boolean;
   voltageOut?: number;
index fef4d93a5da06787a5bcfbc71fea74b0446b2a9a..e22d8a8e506cc8bb239055c0e6d37ad681ab2114 100644 (file)
@@ -12,14 +12,20 @@ export default class Configuration {
   }
 
   static getConnectionTimeout(): number {
-    Configuration.deprecateConfigurationKey('autoReconnectTimeout', 'Use \'connectionTimeout\' instead');
+    Configuration.deprecateConfigurationKey('autoReconnectTimeout', 'Use \'connectionTimeout\' in charging station instead');
+    Configuration.deprecateConfigurationKey('connectionTimeout', 'Use it in charging station template instead');
     // Read conf
-    return Utils.objectHasOwnProperty(Configuration.getConfig(), 'connectionTimeout') ? Configuration.getConfig().connectionTimeout : 10;
+    if (Utils.objectHasOwnProperty(Configuration.getConfig(), 'connectionTimeout')) {
+      return Configuration.getConfig().connectionTimeout;
+    }
   }
 
   static getAutoReconnectMaxRetries(): number {
+    Configuration.deprecateConfigurationKey('autoReconnectMaxRetries', 'Use it in charging station template instead');
     // Read conf
-    return Utils.objectHasOwnProperty(Configuration.getConfig(), 'autoReconnectMaxRetries') ? Configuration.getConfig().autoReconnectMaxRetries : -1;
+    if (Utils.objectHasOwnProperty(Configuration.getConfig(), 'autoReconnectMaxRetries')) {
+      return Configuration.getConfig().autoReconnectMaxRetries;
+    }
   }
 
   static getStationTemplateURLs(): StationTemplateURL[] {