X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Focpp%2F1.6%2FOCPP16IncomingRequestService.ts;h=6dae5c8ad51c17f66f332906bd44c0067d7720de;hb=d1ff85994f2ca20b45a7e7b6f07d0a90d98eaa54;hp=4b565eb937d27728d7f98b02ab5f88ae3138d906;hpb=4ed03b6ec8110ad11b67ead121145c80995f69df;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts b/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts index 4b565eb9..6dae5c8a 100644 --- a/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts +++ b/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts @@ -6,7 +6,14 @@ import { URL, fileURLToPath } from 'node:url'; import type { JSONSchemaType } from 'ajv'; import { Client, type FTPResponse } from 'basic-ftp'; -import { addSeconds, differenceInSeconds, isDate, maxTime, secondsToMilliseconds } from 'date-fns'; +import { + type Interval, + addSeconds, + differenceInSeconds, + isDate, + secondsToMilliseconds, +} from 'date-fns'; +import { maxTime } from 'date-fns/constants'; import { create } from 'tar'; import { OCPP16Constants } from './OCPP16Constants'; @@ -25,8 +32,6 @@ import { OCPPError } from '../../../exception'; import { type ChangeConfigurationRequest, type ChangeConfigurationResponse, - type ClearChargingProfileRequest, - type ClearChargingProfileResponse, ErrorType, type GenericResponse, GenericStatus, @@ -35,7 +40,6 @@ import { type GetDiagnosticsRequest, type GetDiagnosticsResponse, type IncomingRequestHandler, - type JsonObject, type JsonType, OCPP16AuthorizationStatus, OCPP16AvailabilityType, @@ -50,6 +54,8 @@ import { OCPP16ChargingProfilePurposeType, type OCPP16ChargingSchedule, type OCPP16ClearCacheRequest, + type OCPP16ClearChargingProfileRequest, + type OCPP16ClearChargingProfileResponse, type OCPP16DataTransferRequest, type OCPP16DataTransferResponse, OCPP16DataTransferVendorId, @@ -109,7 +115,7 @@ import { OCPPIncomingRequestService } from '../OCPPIncomingRequestService'; const moduleName = 'OCPP16IncomingRequestService'; export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { - protected jsonSchemas: Map>; + protected jsonSchemas: Map>; private incomingRequestHandlers: Map; public constructor() { @@ -187,7 +193,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { this.handleRequestCancelReservation.bind(this) as unknown as IncomingRequestHandler, ], ]); - this.jsonSchemas = new Map>([ + this.jsonSchemas = new Map>([ [ OCPP16IncomingRequestCommand.RESET, OCPP16ServiceUtils.parseJsonSchemaFile( @@ -254,7 +260,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { ], [ OCPP16IncomingRequestCommand.CLEAR_CHARGING_PROFILE, - OCPP16ServiceUtils.parseJsonSchemaFile( + OCPP16ServiceUtils.parseJsonSchemaFile( 'assets/json-schemas/ocpp/1.6/ClearChargingProfile.json', moduleName, 'constructor', @@ -340,7 +346,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { ): Promise { let response: ResType; if ( - chargingStation.getOcppStrictCompliance() === true && + chargingStation.stationInfo?.ocppStrictCompliance === true && chargingStation.inPendingState() === true && (commandName === OCPP16IncomingRequestCommand.REMOTE_START_TRANSACTION || commandName === OCPP16IncomingRequestCommand.REMOTE_STOP_TRANSACTION) @@ -358,7 +364,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { } if ( chargingStation.isRegistered() === true || - (chargingStation.getOcppStrictCompliance() === false && + (chargingStation.stationInfo?.ocppStrictCompliance === false && chargingStation.inUnknownState() === true) ) { if ( @@ -439,14 +445,9 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { commandPayload: ResetRequest, ): GenericResponse { const { type } = commandPayload; - this.runInAsyncScope( - chargingStation.reset.bind(chargingStation) as ( - this: ChargingStation, - ...args: unknown[] - ) => Promise, - chargingStation, - `${type}Reset` as OCPP16StopTransactionReason, - ).catch(Constants.EMPTY_FUNCTION); + chargingStation + .reset(`${type}Reset` as OCPP16StopTransactionReason) + .catch(Constants.EMPTY_FUNCTION); logger.info( `${chargingStation.logPrefix()} ${type} reset command received, simulating it. The station will be back online in ${formatDurationMilliSeconds( chargingStation.stationInfo.resetTime!, @@ -512,7 +513,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { } else if (isNotEmptyArray(key) === true) { for (const k of key!) { const keyFound = getConfigurationKey(chargingStation, k, true); - if (keyFound) { + if (keyFound !== undefined) { if (isUndefined(keyFound.visible) === true) { keyFound.visible = true; } @@ -792,8 +793,8 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { private handleRequestClearChargingProfile( chargingStation: ChargingStation, - commandPayload: ClearChargingProfileRequest, - ): ClearChargingProfileResponse { + commandPayload: OCPP16ClearChargingProfileRequest, + ): OCPP16ClearChargingProfileResponse { if ( OCPP16ServiceUtils.checkFeatureProfile( chargingStation, @@ -1116,25 +1117,11 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { retrieveDate = convertToDate(retrieveDate)!; const now = Date.now(); if (retrieveDate?.getTime() <= now) { - this.runInAsyncScope( - this.updateFirmwareSimulation.bind(this) as ( - this: OCPP16IncomingRequestService, - ...args: unknown[] - ) => Promise, - this, - chargingStation, - ).catch(Constants.EMPTY_FUNCTION); + this.updateFirmwareSimulation(chargingStation).catch(Constants.EMPTY_FUNCTION); } else { setTimeout( () => { - this.runInAsyncScope( - this.updateFirmwareSimulation.bind(this) as ( - this: OCPP16IncomingRequestService, - ...args: unknown[] - ) => Promise, - this, - chargingStation, - ).catch(Constants.EMPTY_FUNCTION); + this.updateFirmwareSimulation(chargingStation).catch(Constants.EMPTY_FUNCTION); }, retrieveDate?.getTime() - now, );