log raw socket messages
[e-mobility-charging-stations-simulator.git] / src / charging-station / ocpp / 1.6 / OCPP16ResponseService.ts
index 27f252e1fdf76b2bfe96806b7fd7e89e5f884b25..08197142faa633d4ab77166547d7d7c77cf57259 100644 (file)
@@ -14,13 +14,13 @@ import {
   OCPP16RequestCommand,
   StatusNotificationRequest,
 } from '../../../types/ocpp/1.6/Requests';
+import { MeterValuesRequest, OCPP16MeterValuesResponse } from '../../../types/ocpp/1.6/MeterValues';
 import {
-  HeartbeatResponse,
   OCPP16BootNotificationResponse,
+  OCPP16HeartbeatResponse,
   OCPP16RegistrationStatus,
-  StatusNotificationResponse,
+  OCPP16StatusNotificationResponse,
 } from '../../../types/ocpp/1.6/Responses';
-import { MeterValuesRequest, MeterValuesResponse } from '../../../types/ocpp/1.6/MeterValues';
 
 import type ChargingStation from '../../ChargingStation';
 import { ErrorType } from '../../../types/ocpp/ErrorType';
@@ -104,12 +104,15 @@ export default class OCPP16ResponseService extends OCPPResponseService {
     if (payload.status === OCPP16RegistrationStatus.ACCEPTED) {
       this.chargingStation.addConfigurationKey(
         OCPP16StandardParametersKey.HeartBeatInterval,
-        payload.interval.toString()
+        payload.interval.toString(),
+        {},
+        { overwrite: true, save: true }
       );
       this.chargingStation.addConfigurationKey(
         OCPP16StandardParametersKey.HeartbeatInterval,
         payload.interval.toString(),
-        { visible: false }
+        { visible: false },
+        { overwrite: true, save: true }
       );
       this.chargingStation.heartbeatSetInterval
         ? this.chargingStation.restartHeartbeat()
@@ -132,7 +135,7 @@ export default class OCPP16ResponseService extends OCPPResponseService {
   }
 
   private handleResponseHeartbeat(
-    payload: HeartbeatResponse,
+    payload: OCPP16HeartbeatResponse,
     requestPayload: HeartbeatRequest
   ): void {
     logger.debug(
@@ -169,9 +172,9 @@ export default class OCPP16ResponseService extends OCPPResponseService {
       this.chargingStation.getConnectorStatus(authorizeConnectorId).idTagAuthorized = false;
       delete this.chargingStation.getConnectorStatus(authorizeConnectorId).authorizeIdTag;
       logger.debug(
-        `${this.chargingStation.logPrefix()} IdTag ${requestPayload.idTag} refused with status ${
+        `${this.chargingStation.logPrefix()} IdTag ${requestPayload.idTag} refused with status '${
           payload.idTagInfo.status
-        } on connector ${authorizeConnectorId}`
+        }' on connector ${authorizeConnectorId}`
       );
     }
   }
@@ -310,7 +313,7 @@ export default class OCPP16ResponseService extends OCPPResponseService {
           requestPayload.meterStart
         );
       this.chargingStation.getBeginEndMeterValues() &&
-        (await this.chargingStation.ocppRequestService.sendMessageHandler(
+        (await this.chargingStation.ocppRequestService.sendMessageHandler<OCPP16MeterValuesResponse>(
           OCPP16RequestCommand.METER_VALUES,
           {
             connectorId,
@@ -319,7 +322,7 @@ export default class OCPP16ResponseService extends OCPPResponseService {
               this.chargingStation.getConnectorStatus(connectorId).transactionBeginMeterValue,
           }
         ));
-      await this.chargingStation.ocppRequestService.sendMessageHandler(
+      await this.chargingStation.ocppRequestService.sendMessageHandler<OCPP16StatusNotificationResponse>(
         OCPP16RequestCommand.STATUS_NOTIFICATION,
         {
           connectorId,
@@ -357,9 +360,9 @@ export default class OCPP16ResponseService extends OCPPResponseService {
         this.chargingStation.logPrefix() +
           ' Starting transaction id ' +
           payload.transactionId.toString() +
-          ' REJECTED with status ' +
+          " REJECTED with status '" +
           payload?.idTagInfo?.status +
-          ', idTag ' +
+          "', idTag " +
           requestPayload.idTag
       );
       await this.resetConnectorOnStartTransactionError(connectorId);
@@ -372,7 +375,7 @@ export default class OCPP16ResponseService extends OCPPResponseService {
       this.chargingStation.getConnectorStatus(connectorId).status !==
       OCPP16ChargePointStatus.AVAILABLE
     ) {
-      await this.chargingStation.ocppRequestService.sendMessageHandler(
+      await this.chargingStation.ocppRequestService.sendMessageHandler<OCPP16StatusNotificationResponse>(
         OCPP16RequestCommand.STATUS_NOTIFICATION,
         {
           connectorId,
@@ -389,17 +392,9 @@ export default class OCPP16ResponseService extends OCPPResponseService {
     payload: OCPP16StopTransactionResponse,
     requestPayload: StopTransactionRequest
   ): Promise<void> {
-    let transactionConnectorId: number;
-    for (const connectorId of this.chargingStation.connectors.keys()) {
-      if (
-        connectorId > 0 &&
-        this.chargingStation.getConnectorStatus(connectorId)?.transactionId ===
-          requestPayload.transactionId
-      ) {
-        transactionConnectorId = connectorId;
-        break;
-      }
-    }
+    const transactionConnectorId = this.chargingStation.getConnectorIdByTransactionId(
+      requestPayload.transactionId
+    );
     if (!transactionConnectorId) {
       logger.error(
         this.chargingStation.logPrefix() +
@@ -412,7 +407,7 @@ export default class OCPP16ResponseService extends OCPPResponseService {
       this.chargingStation.getBeginEndMeterValues() &&
         !this.chargingStation.getOcppStrictCompliance() &&
         this.chargingStation.getOutOfOrderEndMeterValues() &&
-        (await this.chargingStation.ocppRequestService.sendMessageHandler(
+        (await this.chargingStation.ocppRequestService.sendMessageHandler<OCPP16MeterValuesResponse>(
           OCPP16RequestCommand.METER_VALUES,
           {
             connectorId: transactionConnectorId,
@@ -428,7 +423,7 @@ export default class OCPP16ResponseService extends OCPPResponseService {
         !this.chargingStation.isChargingStationAvailable() ||
         !this.chargingStation.isConnectorAvailable(transactionConnectorId)
       ) {
-        await this.chargingStation.ocppRequestService.sendMessageHandler(
+        await this.chargingStation.ocppRequestService.sendMessageHandler<OCPP16StatusNotificationResponse>(
           OCPP16RequestCommand.STATUS_NOTIFICATION,
           {
             connectorId: transactionConnectorId,
@@ -439,7 +434,7 @@ export default class OCPP16ResponseService extends OCPPResponseService {
         this.chargingStation.getConnectorStatus(transactionConnectorId).status =
           OCPP16ChargePointStatus.UNAVAILABLE;
       } else {
-        await this.chargingStation.ocppRequestService.sendMessageHandler(
+        await this.chargingStation.ocppRequestService.sendMessageHandler<OCPP16BootNotificationResponse>(
           OCPP16RequestCommand.STATUS_NOTIFICATION,
           {
             connectorId: transactionConnectorId,
@@ -468,15 +463,16 @@ export default class OCPP16ResponseService extends OCPPResponseService {
         this.chargingStation.logPrefix() +
           ' Stopping transaction id ' +
           requestPayload.transactionId.toString() +
-          ' REJECTED with status ' +
-          payload.idTagInfo?.status
+          " REJECTED with status '" +
+          payload.idTagInfo?.status +
+          "'"
       );
     }
   }
 
   private handleResponseStatusNotification(
     payload: StatusNotificationRequest,
-    requestPayload: StatusNotificationResponse
+    requestPayload: OCPP16StatusNotificationResponse
   ): void {
     logger.debug(
       this.chargingStation.logPrefix() +
@@ -488,7 +484,7 @@ export default class OCPP16ResponseService extends OCPPResponseService {
 
   private handleResponseMeterValues(
     payload: MeterValuesRequest,
-    requestPayload: MeterValuesResponse
+    requestPayload: OCPP16MeterValuesResponse
   ): void {
     logger.debug(
       this.chargingStation.logPrefix() +