X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcharging-station%2Focpp%2F1.6%2FOCPP16IncomingRequestService.ts;h=e2d5886bc799001d36837bef11bff647a2850297;hb=721646e902fa12d165d4a1da06fb963fb30dc9f2;hp=3d5517dde9c8f33dbbea49e29020994427402383;hpb=9a15316cb7ede50d57ab25f758f0ccf1aa1bd903;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 3d5517dd..e2d5886b 100644 --- a/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts +++ b/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts @@ -8,90 +8,81 @@ import type { JSONSchemaType } from 'ajv'; import { Client, type FTPResponse } from 'basic-ftp'; import tar from 'tar'; -import { OCPP16ServiceUtils } from './OCPP16ServiceUtils'; -import OCPPError from '../../../exception/OCPPError'; -import type { JsonObject, JsonType } from '../../../types/JsonType'; -import { OCPP16ChargePointErrorCode } from '../../../types/ocpp/1.6/ChargePointErrorCode'; -import { OCPP16ChargePointStatus } from '../../../types/ocpp/1.6/ChargePointStatus'; import { - ChargingProfilePurposeType, - type OCPP16ChargingProfile, -} from '../../../types/ocpp/1.6/ChargingProfile'; -import { - OCPP16StandardParametersKey, - OCPP16SupportedFeatureProfiles, -} from '../../../types/ocpp/1.6/Configuration'; -import { OCPP16DiagnosticsStatus } from '../../../types/ocpp/1.6/DiagnosticsStatus'; + type ChargingStation, + ChargingStationConfigurationUtils, + ChargingStationUtils, +} from '../../../charging-station'; +import { OCPPError } from '../../../exception'; import { type ChangeAvailabilityRequest, + type ChangeAvailabilityResponse, type ChangeConfigurationRequest, + type ChangeConfigurationResponse, type ClearChargingProfileRequest, + type ClearChargingProfileResponse, + ErrorType, + type GenericResponse, type GetConfigurationRequest, + type GetConfigurationResponse, type GetDiagnosticsRequest, + type GetDiagnosticsResponse, + type IncomingRequestHandler, + type JsonObject, + type JsonType, + OCPP16AuthorizationStatus, + type OCPP16AuthorizeRequest, + type OCPP16AuthorizeResponse, OCPP16AvailabilityType, type OCPP16BootNotificationRequest, + type OCPP16BootNotificationResponse, + OCPP16ChargePointErrorCode, + OCPP16ChargePointStatus, + type OCPP16ChargingProfile, + OCPP16ChargingProfilePurposeType, type OCPP16ClearCacheRequest, type OCPP16DataTransferRequest, + type OCPP16DataTransferResponse, + OCPP16DataTransferStatus, OCPP16DataTransferVendorId, + OCPP16DiagnosticsStatus, type OCPP16DiagnosticsStatusNotificationRequest, + type OCPP16DiagnosticsStatusNotificationResponse, OCPP16FirmwareStatus, type OCPP16FirmwareStatusNotificationRequest, + type OCPP16FirmwareStatusNotificationResponse, type OCPP16HeartbeatRequest, + type OCPP16HeartbeatResponse, OCPP16IncomingRequestCommand, OCPP16MessageTrigger, OCPP16RequestCommand, + OCPP16StandardParametersKey, + type OCPP16StartTransactionRequest, + type OCPP16StartTransactionResponse, type OCPP16StatusNotificationRequest, + type OCPP16StatusNotificationResponse, + OCPP16StopTransactionReason, + OCPP16SupportedFeatureProfiles, type OCPP16TriggerMessageRequest, + type OCPP16TriggerMessageResponse, type OCPP16UpdateFirmwareRequest, + type OCPP16UpdateFirmwareResponse, + type OCPPConfigurationKey, + OCPPVersion, type RemoteStartTransactionRequest, type RemoteStopTransactionRequest, type ResetRequest, type SetChargingProfileRequest, - type UnlockConnectorRequest, -} from '../../../types/ocpp/1.6/Requests'; -import { - type ChangeAvailabilityResponse, - type ChangeConfigurationResponse, - type ClearChargingProfileResponse, - type GetConfigurationResponse, - type GetDiagnosticsResponse, - type OCPP16BootNotificationResponse, - type OCPP16DataTransferResponse, - OCPP16DataTransferStatus, - type OCPP16DiagnosticsStatusNotificationResponse, - type OCPP16FirmwareStatusNotificationResponse, - type OCPP16HeartbeatResponse, - type OCPP16StatusNotificationResponse, - type OCPP16TriggerMessageResponse, - type OCPP16UpdateFirmwareResponse, type SetChargingProfileResponse, + type UnlockConnectorRequest, type UnlockConnectorResponse, -} from '../../../types/ocpp/1.6/Responses'; -import { - OCPP16AuthorizationStatus, - type OCPP16AuthorizeRequest, - type OCPP16AuthorizeResponse, - type OCPP16StartTransactionRequest, - type OCPP16StartTransactionResponse, - OCPP16StopTransactionReason, -} from '../../../types/ocpp/1.6/Transaction'; -import type { OCPPConfigurationKey } from '../../../types/ocpp/Configuration'; -import { ErrorType } from '../../../types/ocpp/ErrorType'; -import { OCPPVersion } from '../../../types/ocpp/OCPPVersion'; -import type { IncomingRequestHandler } from '../../../types/ocpp/Requests'; -import type { GenericResponse } from '../../../types/ocpp/Responses'; -import Constants from '../../../utils/Constants'; -import logger from '../../../utils/Logger'; -import Utils from '../../../utils/Utils'; -import type ChargingStation from '../../ChargingStation'; -import { ChargingStationConfigurationUtils } from '../../ChargingStationConfigurationUtils'; -import { ChargingStationUtils } from '../../ChargingStationUtils'; -import OCPPConstants from '../OCPPConstants'; -import OCPPIncomingRequestService from '../OCPPIncomingRequestService'; +} from '../../../types'; +import { Constants, Utils, logger } from '../../../utils'; +import { OCPP16ServiceUtils, OCPPConstants, OCPPIncomingRequestService } from '../internal'; const moduleName = 'OCPP16IncomingRequestService'; -export default class OCPP16IncomingRequestService extends OCPPIncomingRequestService { +export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { protected jsonSchemas: Map>; private incomingRequestHandlers: Map; @@ -367,9 +358,7 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer ) => Promise, chargingStation, `${commandPayload.type}Reset` as OCPP16StopTransactionReason - ).catch(() => { - /* This is intentional */ - }); + ).catch(Constants.EMPTY_FUNCTION); logger.info( `${chargingStation.logPrefix()} ${ commandPayload.type @@ -412,10 +401,10 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer OCPP16StatusNotificationResponse >(chargingStation, OCPP16RequestCommand.STATUS_NOTIFICATION, { connectorId, - status: OCPP16ChargePointStatus.AVAILABLE, + status: OCPP16ChargePointStatus.Available, errorCode: OCPP16ChargePointErrorCode.NO_ERROR, }); - chargingStation.getConnectorStatus(connectorId).status = OCPP16ChargePointStatus.AVAILABLE; + chargingStation.getConnectorStatus(connectorId).status = OCPP16ChargePointStatus.Available; return OCPPConstants.OCPP_RESPONSE_UNLOCKED; } @@ -443,7 +432,8 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer for (const key of commandPayload.key) { const keyFound = ChargingStationConfigurationUtils.getConfigurationKey( chargingStation, - key + key, + true ); if (keyFound) { if (Utils.isUndefined(keyFound.visible) === true) { @@ -545,14 +535,14 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer } if ( commandPayload.csChargingProfiles.chargingProfilePurpose === - ChargingProfilePurposeType.CHARGE_POINT_MAX_PROFILE && + OCPP16ChargingProfilePurposeType.CHARGE_POINT_MAX_PROFILE && commandPayload.connectorId !== 0 ) { return OCPPConstants.OCPP_SET_CHARGING_PROFILE_RESPONSE_REJECTED; } if ( commandPayload.csChargingProfiles.chargingProfilePurpose === - ChargingProfilePurposeType.TX_PROFILE && + OCPP16ChargingProfilePurposeType.TX_PROFILE && (commandPayload.connectorId === 0 || chargingStation.getConnectorStatus(commandPayload.connectorId)?.transactionStarted === false) @@ -674,8 +664,8 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer } const chargePointStatus: OCPP16ChargePointStatus = commandPayload.type === OCPP16AvailabilityType.OPERATIVE - ? OCPP16ChargePointStatus.AVAILABLE - : OCPP16ChargePointStatus.UNAVAILABLE; + ? OCPP16ChargePointStatus.Available + : OCPP16ChargePointStatus.Unavailable; if (connectorId === 0) { let response: ChangeAvailabilityResponse = OCPPConstants.OCPP_AVAILABILITY_RESPONSE_ACCEPTED; for (const id of chargingStation.connectors.keys()) { @@ -735,11 +725,11 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer OCPP16StatusNotificationResponse >(chargingStation, OCPP16RequestCommand.STATUS_NOTIFICATION, { connectorId: transactionConnectorId, - status: OCPP16ChargePointStatus.PREPARING, + status: OCPP16ChargePointStatus.Preparing, errorCode: OCPP16ChargePointErrorCode.NO_ERROR, }); const connectorStatus = chargingStation.getConnectorStatus(transactionConnectorId); - connectorStatus.status = OCPP16ChargePointStatus.PREPARING; + connectorStatus.status = OCPP16ChargePointStatus.Preparing; if (chargingStation.isChargingStationAvailable() === true) { // Check if authorized if (chargingStation.getAuthorizeRemoteTxRequests() === true) { @@ -871,17 +861,17 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer idTag: string ): Promise { if ( - chargingStation.getConnectorStatus(connectorId)?.status !== OCPP16ChargePointStatus.AVAILABLE + chargingStation.getConnectorStatus(connectorId)?.status !== OCPP16ChargePointStatus.Available ) { await chargingStation.ocppRequestService.requestHandler< OCPP16StatusNotificationRequest, OCPP16StatusNotificationResponse >(chargingStation, OCPP16RequestCommand.STATUS_NOTIFICATION, { connectorId, - status: OCPP16ChargePointStatus.AVAILABLE, + status: OCPP16ChargePointStatus.Available, errorCode: OCPP16ChargePointErrorCode.NO_ERROR, }); - chargingStation.getConnectorStatus(connectorId).status = OCPP16ChargePointStatus.AVAILABLE; + chargingStation.getConnectorStatus(connectorId).status = OCPP16ChargePointStatus.Available; } logger.warn( `${chargingStation.logPrefix()} Remote starting transaction REJECTED on connector Id ${connectorId.toString()}, idTag '${idTag}', availability '${ @@ -896,14 +886,14 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer connectorId: number, cp: OCPP16ChargingProfile ): boolean { - if (cp && cp.chargingProfilePurpose === ChargingProfilePurposeType.TX_PROFILE) { + if (cp && cp.chargingProfilePurpose === OCPP16ChargingProfilePurposeType.TX_PROFILE) { OCPP16ServiceUtils.setChargingProfile(chargingStation, connectorId, cp); logger.debug( `${chargingStation.logPrefix()} Charging profile(s) set at remote start transaction on connector id ${connectorId}: %j`, cp ); return true; - } else if (cp && cp.chargingProfilePurpose !== ChargingProfilePurposeType.TX_PROFILE) { + } else if (cp && cp.chargingProfilePurpose !== OCPP16ChargingProfilePurposeType.TX_PROFILE) { logger.warn( `${chargingStation.logPrefix()} Not allowed to set ${ cp.chargingProfilePurpose @@ -930,10 +920,10 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer OCPP16StatusNotificationResponse >(chargingStation, OCPP16RequestCommand.STATUS_NOTIFICATION, { connectorId, - status: OCPP16ChargePointStatus.FINISHING, + status: OCPP16ChargePointStatus.Finishing, errorCode: OCPP16ChargePointErrorCode.NO_ERROR, }); - chargingStation.getConnectorStatus(connectorId).status = OCPP16ChargePointStatus.FINISHING; + chargingStation.getConnectorStatus(connectorId).status = OCPP16ChargePointStatus.Finishing; const stopResponse = await chargingStation.stopTransactionOnConnector( connectorId, OCPP16StopTransactionReason.REMOTE @@ -985,14 +975,10 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer ) => Promise, this, chargingStation - ).catch(() => { - /* This is intentional */ - }); + ).catch(Constants.EMPTY_FUNCTION); } else { setTimeout(() => { - this.updateFirmware(chargingStation).catch(() => { - /* Intentional */ - }); + this.updateFirmware(chargingStation).catch(Constants.EMPTY_FUNCTION); }, retrieveDate?.getTime() - now); } return OCPPConstants.OCPP_RESPONSE_EMPTY; @@ -1014,11 +1000,11 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer OCPP16StatusNotificationResponse >(chargingStation, OCPP16RequestCommand.STATUS_NOTIFICATION, { connectorId, - status: OCPP16ChargePointStatus.UNAVAILABLE, + status: OCPP16ChargePointStatus.Unavailable, errorCode: OCPP16ChargePointErrorCode.NO_ERROR, }); chargingStation.getConnectorStatus(connectorId).status = - OCPP16ChargePointStatus.UNAVAILABLE; + OCPP16ChargePointStatus.Unavailable; } } if ( @@ -1226,9 +1212,7 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer .then((response) => { chargingStation.bootNotificationResponse = response; }) - .catch(() => { - /* This is intentional */ - }); + .catch(Constants.EMPTY_FUNCTION); }, Constants.OCPP_TRIGGER_MESSAGE_DELAY); return OCPPConstants.OCPP_TRIGGER_MESSAGE_RESPONSE_ACCEPTED; case OCPP16MessageTrigger.Heartbeat: @@ -1242,9 +1226,7 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer triggerMessage: true, } ) - .catch(() => { - /* This is intentional */ - }); + .catch(Constants.EMPTY_FUNCTION); }, Constants.OCPP_TRIGGER_MESSAGE_DELAY); return OCPPConstants.OCPP_TRIGGER_MESSAGE_RESPONSE_ACCEPTED; case OCPP16MessageTrigger.StatusNotification: @@ -1263,9 +1245,7 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer triggerMessage: true, } ) - .catch(() => { - /* This is intentional */ - }); + .catch(Constants.EMPTY_FUNCTION); } else { for (const connectorId of chargingStation.connectors.keys()) { chargingStation.ocppRequestService @@ -1284,9 +1264,7 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer triggerMessage: true, } ) - .catch(() => { - /* This is intentional */ - }); + .catch(Constants.EMPTY_FUNCTION); } } }, Constants.OCPP_TRIGGER_MESSAGE_DELAY);