fix: do not test for connector status in ATG
authorJérôme Benoit <jerome.benoit@sap.com>
Mon, 13 Nov 2023 08:20:31 +0000 (09:20 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Mon, 13 Nov 2023 08:20:31 +0000 (09:20 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
src/charging-station/AutomaticTransactionGenerator.ts
src/charging-station/ocpp/1.6/OCPP16ServiceUtils.ts
src/charging-station/ocpp/OCPPServiceUtils.ts

index 3d1e8b1ccf2319dd694831d3792b337e60b7333d..efc3769ac45b273c65cefbc2f5beea549dc3224d 100644 (file)
@@ -12,7 +12,6 @@ import { BaseError } from '../exception';
 import { PerformanceStatistics } from '../performance';
 import {
   AuthorizationStatus,
-  ConnectorStatusEnum,
   RequestCommand,
   type StartTransactionRequest,
   type StartTransactionResponse,
@@ -305,17 +304,6 @@ export class AutomaticTransactionGenerator extends AsyncResource {
       );
       return false;
     }
-    if (
-      this.chargingStation.getConnectorStatus(connectorId)?.status ===
-      ConnectorStatusEnum.Unavailable
-    ) {
-      logger.info(
-        `${this.logPrefix(
-          connectorId,
-        )} entered in transaction loop while the connector ${connectorId} status is unavailable`,
-      );
-      return false;
-    }
     return true;
   }
 
index 0086877c038bd9699328b90a0ab3f0512a1f8ce2..63339cf245db3a7ed84bbae3961be76eee14ae42 100644 (file)
@@ -740,7 +740,7 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils {
         (connectorMaximumAvailablePower * interval) / (3600 * 1000),
         2,
       );
-      const energyValueRounded = energySampledValueTemplate.value
+      const energyValueRounded = isNotEmptyString(energySampledValueTemplate.value)
         ? // Cumulate the fluctuated value around the static one
           getRandomFloatFluctuatedRounded(
             OCPP16ServiceUtils.getLimitFromSampledValueTemplateCustomValue(
index 7da384d3a22e802928e10aeebd8208ff12e4792d..3a1423c4679ce0561b46df3f30d58dc5da0f7189 100644 (file)
@@ -419,20 +419,22 @@ export class OCPPServiceUtils {
   protected static getLimitFromSampledValueTemplateCustomValue(
     value: string,
     limit: number,
-    options?: { limitationEnabled?: boolean; unitMultiplier?: number },
+    options?: { limitationEnabled?: boolean; unitMultiplier?: number; defaultValue?: number },
   ): number {
     options = {
       ...{
         limitationEnabled: true,
         unitMultiplier: 1,
+        defaultValue: 0,
       },
       ...options,
     };
-    const parsedInt = parseInt(value);
-    const numberValue = isNaN(parsedInt) ? Infinity : parsedInt;
-    return options?.limitationEnabled
-      ? min(numberValue * options.unitMultiplier!, limit)
-      : numberValue * options.unitMultiplier!;
+    const parsedValue = parseInt(value);
+    if (options?.limitationEnabled) {
+      const numberValue = !isNaN(parsedValue) ? parsedValue : Infinity;
+      return min(numberValue * options.unitMultiplier!, limit);
+    }
+    return (!isNaN(parsedValue) ? parsedValue : options.defaultValue!) * options.unitMultiplier!;
   }
 
   private static isIdTagLocalAuthorized(chargingStation: ChargingStation, idTag: string): boolean {