fix: fix random connectors auto enablement
[e-mobility-charging-stations-simulator.git] / src / charging-station / ocpp / OCPPServiceUtils.ts
index b0225063976efdf3c1927d402282c7f7e60e42f1..bd228564d9649ce2eddd153dab9aba1903704125 100644 (file)
@@ -37,7 +37,9 @@ import {
   MeterValueMeasurand,
   MeterValuePhase,
   MeterValueUnit,
+  type OCPP16ChargePointStatus,
   type OCPP16StatusNotificationRequest,
+  type OCPP20ConnectorStatusEnumType,
   type OCPP20StatusNotificationRequest,
   OCPPVersion,
   RequestCommand,
@@ -59,8 +61,6 @@ import {
   handleFileException,
   isNotEmptyArray,
   isNotEmptyString,
-  isNullOrUndefined,
-  isUndefined,
   logPrefix,
   logger,
   max,
@@ -91,16 +91,17 @@ export const buildStatusNotificationRequest = (
     case OCPPVersion.VERSION_16:
       return {
         connectorId,
-        status,
+        status: status as OCPP16ChargePointStatus,
         errorCode: ChargePointErrorCode.NO_ERROR
       } satisfies OCPP16StatusNotificationRequest
     case OCPPVersion.VERSION_20:
     case OCPPVersion.VERSION_201:
       return {
         timestamp: new Date(),
-        connectorStatus: status,
+        connectorStatus: status as OCPP20ConnectorStatusEnumType,
         connectorId,
-        evseId
+        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+        evseId: evseId!
       } satisfies OCPP20StatusNotificationRequest
     default:
       throw new BaseError('Cannot build status notification payload: OCPP version not supported')
@@ -961,17 +962,13 @@ export const buildMeterValue = (
         // Persist previous value on connector
         if (connector != null) {
           if (
-            !isNullOrUndefined(connector.energyActiveImportRegisterValue) &&
-            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
-            connector.energyActiveImportRegisterValue! >= 0 &&
-            !isNullOrUndefined(connector.transactionEnergyActiveImportRegisterValue) &&
-            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
-            connector.transactionEnergyActiveImportRegisterValue! >= 0
+            connector.energyActiveImportRegisterValue != null &&
+            connector.energyActiveImportRegisterValue >= 0 &&
+            connector.transactionEnergyActiveImportRegisterValue != null &&
+            connector.transactionEnergyActiveImportRegisterValue >= 0
           ) {
-            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
-            connector.energyActiveImportRegisterValue! += energyValueRounded
-            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
-            connector.transactionEnergyActiveImportRegisterValue! += energyValueRounded
+            connector.energyActiveImportRegisterValue += energyValueRounded
+            connector.transactionEnergyActiveImportRegisterValue += energyValueRounded
           } else {
             connector.energyActiveImportRegisterValue = 0
             connector.transactionEnergyActiveImportRegisterValue = 0
@@ -1050,7 +1047,7 @@ const checkMeasurandPowerDivider = (
   chargingStation: ChargingStation,
   measurandType: MeterValueMeasurand
 ): void => {
-  if (isUndefined(chargingStation.powerDivider)) {
+  if (chargingStation.powerDivider == null) {
     const errMsg = `MeterValues measurand ${
       measurandType ?? MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER
     }: powerDivider is undefined`
@@ -1185,16 +1182,16 @@ const buildSampledValue = (
   const sampledValuePhase = phase ?? sampledValueTemplate?.phase
   // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
   return {
-    ...(!isNullOrUndefined(sampledValueTemplate.unit) && {
+    ...(sampledValueTemplate.unit != null && {
       unit: sampledValueTemplate.unit
     }),
-    ...(!isNullOrUndefined(sampledValueContext) && { context: sampledValueContext }),
-    ...(!isNullOrUndefined(sampledValueTemplate.measurand) && {
+    ...(sampledValueContext != null && { context: sampledValueContext }),
+    ...(sampledValueTemplate.measurand != null && {
       measurand: sampledValueTemplate.measurand
     }),
-    ...(!isNullOrUndefined(sampledValueLocation) && { location: sampledValueLocation }),
-    ...(!isNullOrUndefined(value) && { value: value.toString() }),
-    ...(!isNullOrUndefined(sampledValuePhase) && { phase: sampledValuePhase })
+    ...(sampledValueLocation != null && { location: sampledValueLocation }),
+    ...(value != null && { value: value.toString() }),
+    ...(sampledValuePhase != null && { phase: sampledValuePhase })
   } as SampledValue
 }
 
@@ -1349,7 +1346,7 @@ export class OCPPServiceUtils {
   }
 
   public static startHeartbeatInterval (chargingStation: ChargingStation, interval: number): void {
-    if (chargingStation.heartbeatSetInterval === undefined) {
+    if (chargingStation.heartbeatSetInterval == null) {
       chargingStation.startHeartbeat()
     } else if (chargingStation.getHeartbeatInterval() !== interval) {
       chargingStation.restartHeartbeat()