fix: ensure custom meterValues values are taken
[e-mobility-charging-stations-simulator.git] / src / charging-station / ocpp / 1.6 / OCPP16ResponseService.ts
index d2e1937590db905d4107be2a81d7da0860f0e325..edec1e4eb53f40bc62f93349d4e97db907637fad 100644 (file)
@@ -1,7 +1,5 @@
 // Partial Copyright Jerome Benoit. 2021-2023. All Rights Reserved.
 
-import { parentPort } from 'node:worker_threads';
-
 import type { JSONSchemaType } from 'ajv';
 import { secondsToMilliseconds } from 'date-fns';
 
@@ -16,6 +14,7 @@ import {
 import { OCPPError } from '../../../exception';
 import {
   type ChangeConfigurationResponse,
+  ChargingStationEvents,
   type ClearChargingProfileResponse,
   ErrorType,
   type GenericResponse,
@@ -53,13 +52,7 @@ import {
   type SetChargingProfileResponse,
   type UnlockConnectorResponse,
 } from '../../../types';
-import {
-  Constants,
-  buildUpdatedMessage,
-  convertToInt,
-  isNullOrUndefined,
-  logger,
-} from '../../../utils';
+import { Constants, convertToInt, isNullOrUndefined, logger } from '../../../utils';
 import { OCPPResponseService } from '../OCPPResponseService';
 
 const moduleName = 'OCPP16ResponseService';
@@ -523,7 +516,7 @@ export class OCPP16ResponseService extends OCPPResponseService {
     if (
       connectorStatus?.transactionRemoteStarted === true &&
       chargingStation.getAuthorizeRemoteTxRequests() === true &&
-      chargingStation.getRemoteAuthorization() === true &&
+      chargingStation.stationInfo?.remoteAuthorization === true &&
       connectorStatus?.idTagLocalAuthorized === false &&
       connectorStatus?.idTagAuthorized === false
     ) {
@@ -559,7 +552,7 @@ export class OCPP16ResponseService extends OCPPResponseService {
     }
     if (connectorStatus?.transactionStarted === true) {
       logger.error(
-        `${chargingStation.logPrefix()} Trying to start a transaction on an already used connector id ${connectorId} by idTag ${connectorStatus?.transactionIdTag}}`,
+        `${chargingStation.logPrefix()} Trying to start a transaction on an already used connector id ${connectorId} by idTag ${connectorStatus?.transactionIdTag}`,
       );
       return;
     }
@@ -569,7 +562,7 @@ export class OCPP16ResponseService extends OCPPResponseService {
           for (const [id, status] of evseStatus.connectors) {
             if (id !== connectorId && status?.transactionStarted === true) {
               logger.error(
-                `${chargingStation.logPrefix()} Trying to start a transaction on an already used evse id ${evseId} by connector id ${id} with idTag ${status?.transactionIdTag}}`,
+                `${chargingStation.logPrefix()} Trying to start a transaction on an already used evse id ${evseId} by connector id ${id} with idTag ${status?.transactionIdTag}`,
               );
               await this.resetConnectorOnStartTransactionError(chargingStation, connectorId);
               return;
@@ -636,7 +629,7 @@ export class OCPP16ResponseService extends OCPPResponseService {
           ReservationTerminationReason.TRANSACTION_STARTED,
         );
       }
-      chargingStation.getBeginEndMeterValues() &&
+      chargingStation.stationInfo?.beginEndMeterValues &&
         (await chargingStation.ocppRequestService.requestHandler<
           OCPP16MeterValuesRequest,
           OCPP16MeterValuesResponse
@@ -700,7 +693,7 @@ export class OCPP16ResponseService extends OCPPResponseService {
         OCPP16ChargePointStatus.Available,
       );
     }
-    parentPort?.postMessage(buildUpdatedMessage(chargingStation));
+    chargingStation.emit(ChargingStationEvents.updated);
   }
 
   private async handleResponseStopTransaction(
@@ -719,9 +712,9 @@ export class OCPP16ResponseService extends OCPPResponseService {
       );
       return;
     }
-    chargingStation.getBeginEndMeterValues() === true &&
-      chargingStation.getOcppStrictCompliance() === false &&
-      chargingStation.getOutOfOrderEndMeterValues() === true &&
+    chargingStation.stationInfo?.beginEndMeterValues === true &&
+      chargingStation.stationInfo?.ocppStrictCompliance === false &&
+      chargingStation.stationInfo?.outOfOrderEndMeterValues === true &&
       (await chargingStation.ocppRequestService.requestHandler<
         OCPP16MeterValuesRequest,
         OCPP16MeterValuesResponse
@@ -757,12 +750,12 @@ export class OCPP16ResponseService extends OCPPResponseService {
     }
     resetConnectorStatus(chargingStation.getConnectorStatus(transactionConnectorId!)!);
     chargingStation.stopMeterValues(transactionConnectorId!);
-    parentPort?.postMessage(buildUpdatedMessage(chargingStation));
+    chargingStation.emit(ChargingStationEvents.updated);
     const logMsg = `${chargingStation.logPrefix()} Transaction with id ${
       requestPayload.transactionId
     } STOPPED on ${
       chargingStation.stationInfo.chargingStationId
-    }#${transactionConnectorId} with status '${payload.idTagInfo?.status ?? 'undefined'}'`;
+    }#${transactionConnectorId} with status '${payload.idTagInfo?.status}'`;
     if (
       isNullOrUndefined(payload.idTagInfo) ||
       payload.idTagInfo?.status === OCPP16AuthorizationStatus.ACCEPTED