X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Focpp%2F1.6%2FOCPP16IncomingRequestService.ts;h=d09e69a1576b64412154e71df2778d157b2315d4;hb=a723e7e9df355545fc6a41bdcbb9debfae22db5f;hp=c870fbc14107624b0f942a09e5c9430c6e3144d6;hpb=6c1761d470507ea23d186be61b94ca7375c5144a;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 c870fbc1..d09e69a1 100644 --- a/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts +++ b/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts @@ -21,10 +21,6 @@ import { OCPP16SupportedFeatureProfiles, } from '../../../types/ocpp/1.6/Configuration'; import { OCPP16DiagnosticsStatus } from '../../../types/ocpp/1.6/DiagnosticsStatus'; -import type { - OCPP16MeterValuesRequest, - OCPP16MeterValuesResponse, -} from '../../../types/ocpp/1.6/MeterValues'; import { ChangeAvailabilityRequest, ChangeConfigurationRequest, @@ -68,8 +64,6 @@ import { OCPP16StartTransactionRequest, OCPP16StartTransactionResponse, OCPP16StopTransactionReason, - OCPP16StopTransactionRequest, - OCPP16StopTransactionResponse, } from '../../../types/ocpp/1.6/Transaction'; import type { OCPPConfigurationKey } from '../../../types/ocpp/Configuration'; import { ErrorType } from '../../../types/ocpp/ErrorType'; @@ -413,37 +407,11 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer ); return Constants.OCPP_RESPONSE_UNLOCK_NOT_SUPPORTED; } - if (chargingStation.getConnectorStatus(connectorId)?.transactionStarted) { - const transactionId = chargingStation.getConnectorStatus(connectorId).transactionId; - if ( - chargingStation.getBeginEndMeterValues() && - chargingStation.getOcppStrictCompliance() && - !chargingStation.getOutOfOrderEndMeterValues() - ) { - // FIXME: Implement OCPP version agnostic helpers - const transactionEndMeterValue = OCPP16ServiceUtils.buildTransactionEndMeterValue( - chargingStation, - connectorId, - chargingStation.getEnergyActiveImportRegisterByTransactionId(transactionId) - ); - await chargingStation.ocppRequestService.requestHandler< - OCPP16MeterValuesRequest, - OCPP16MeterValuesResponse - >(chargingStation, OCPP16RequestCommand.METER_VALUES, { - connectorId, - transactionId, - meterValue: [transactionEndMeterValue], - }); - } - const stopResponse = await chargingStation.ocppRequestService.requestHandler< - OCPP16StopTransactionRequest, - OCPP16StopTransactionResponse - >(chargingStation, OCPP16RequestCommand.STOP_TRANSACTION, { - transactionId, - meterStop: chargingStation.getEnergyActiveImportRegisterByTransactionId(transactionId), - idTag: chargingStation.getTransactionIdTag(transactionId), - reason: OCPP16StopTransactionReason.UNLOCK_COMMAND, - }); + if (chargingStation.getConnectorStatus(connectorId)?.transactionStarted === true) { + const stopResponse = await chargingStation.stopTransactionOnConnector( + connectorId, + OCPP16StopTransactionReason.UNLOCK_COMMAND + ); if (stopResponse.idTagInfo?.status === OCPP16AuthorizationStatus.ACCEPTED) { return Constants.OCPP_RESPONSE_UNLOCKED; } @@ -467,9 +435,9 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer ): GetConfigurationResponse { const configurationKey: OCPPConfigurationKey[] = []; const unknownKey: string[] = []; - if (Utils.isEmptyArray(commandPayload.key)) { + if (Utils.isEmptyArray(commandPayload.key) === true) { for (const configuration of chargingStation.ocppConfiguration.configurationKey) { - if (Utils.isUndefined(configuration.visible)) { + if (Utils.isUndefined(configuration.visible) === true) { configuration.visible = true; } if (!configuration.visible) { @@ -488,10 +456,10 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer key ); if (keyFound) { - if (Utils.isUndefined(keyFound.visible)) { + if (Utils.isUndefined(keyFound.visible) === true) { keyFound.visible = true; } - if (!keyFound.visible) { + if (keyFound.visible === false) { continue; } configurationKey.push({ @@ -596,7 +564,8 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer commandPayload.csChargingProfiles.chargingProfilePurpose === ChargingProfilePurposeType.TX_PROFILE && (commandPayload.connectorId === 0 || - !chargingStation.getConnectorStatus(commandPayload.connectorId)?.transactionStarted) + chargingStation.getConnectorStatus(commandPayload.connectorId)?.transactionStarted === + false) ) { return Constants.OCPP_SET_CHARGING_PROFILE_RESPONSE_REJECTED; } @@ -712,7 +681,7 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer if (connectorId === 0) { let response: ChangeAvailabilityResponse = Constants.OCPP_AVAILABILITY_RESPONSE_ACCEPTED; for (const id of chargingStation.connectors.keys()) { - if (chargingStation.getConnectorStatus(id)?.transactionStarted) { + if (chargingStation.getConnectorStatus(id)?.transactionStarted === true) { response = Constants.OCPP_AVAILABILITY_RESPONSE_SCHEDULED; } chargingStation.getConnectorStatus(id).availability = commandPayload.type; @@ -736,7 +705,7 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer OCPP16AvailabilityType.INOPERATIVE && commandPayload.type === OCPP16AvailabilityType.INOPERATIVE)) ) { - if (chargingStation.getConnectorStatus(connectorId)?.transactionStarted) { + if (chargingStation.getConnectorStatus(connectorId)?.transactionStarted === true) { chargingStation.getConnectorStatus(connectorId).availability = commandPayload.type; return Constants.OCPP_AVAILABILITY_RESPONSE_SCHEDULED; } @@ -762,6 +731,15 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer const transactionConnectorId = commandPayload.connectorId; const connectorStatus = chargingStation.getConnectorStatus(transactionConnectorId); if (transactionConnectorId) { + const remoteStartTransactionLogMsg = + chargingStation.logPrefix() + + ' Transaction remotely STARTED on ' + + chargingStation.stationInfo.chargingStationId + + '#' + + transactionConnectorId.toString() + + " for idTag '" + + commandPayload.idTag + + "'"; await chargingStation.ocppRequestService.requestHandler< OCPP16StatusNotificationRequest, OCPP16StatusNotificationResponse @@ -787,7 +765,7 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer connectorStatus.localAuthorizeIdTag = commandPayload.idTag; connectorStatus.idTagLocalAuthorized = true; authorized = true; - } else if (chargingStation.getMayAuthorizeAtRemoteStart()) { + } else if (chargingStation.getMustAuthorizeAtRemoteStart()) { connectorStatus.authorizeIdTag = commandPayload.idTag; const authorizeResponse: OCPP16AuthorizeResponse = await chargingStation.ocppRequestService.requestHandler< @@ -825,15 +803,7 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer }) ).idTagInfo.status === OCPP16AuthorizationStatus.ACCEPTED ) { - logger.debug( - chargingStation.logPrefix() + - ' Transaction remotely STARTED on ' + - chargingStation.stationInfo.chargingStationId + - '#' + - transactionConnectorId.toString() + - ' for idTag ' + - commandPayload.idTag - ); + logger.debug(remoteStartTransactionLogMsg); return Constants.OCPP_RESPONSE_ACCEPTED; } return this.notifyRemoteStartTransactionRejected( @@ -874,15 +844,7 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer }) ).idTagInfo.status === OCPP16AuthorizationStatus.ACCEPTED ) { - logger.debug( - chargingStation.logPrefix() + - ' Transaction remotely STARTED on ' + - chargingStation.stationInfo.chargingStationId + - '#' + - transactionConnectorId.toString() + - ' for idTag ' + - commandPayload.idTag - ); + logger.debug(remoteStartTransactionLogMsg); return Constants.OCPP_RESPONSE_ACCEPTED; } return this.notifyRemoteStartTransactionRejected( @@ -932,12 +894,13 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer chargingStation.logPrefix() + ' Remote starting transaction REJECTED on connector Id ' + connectorId.toString() + - ', idTag ' + + ", idTag '" + idTag + - ', availability ' + + "', availability '" + chargingStation.getConnectorStatus(connectorId).availability + - ', status ' + - chargingStation.getConnectorStatus(connectorId).status + "', status '" + + chargingStation.getConnectorStatus(connectorId).status + + "'" ); return Constants.OCPP_RESPONSE_REJECTED; } @@ -985,35 +948,14 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer errorCode: OCPP16ChargePointErrorCode.NO_ERROR, }); chargingStation.getConnectorStatus(connectorId).status = OCPP16ChargePointStatus.FINISHING; - if ( - chargingStation.getBeginEndMeterValues() && - chargingStation.getOcppStrictCompliance() && - !chargingStation.getOutOfOrderEndMeterValues() - ) { - // FIXME: Implement OCPP version agnostic helpers - const transactionEndMeterValue = OCPP16ServiceUtils.buildTransactionEndMeterValue( - chargingStation, - connectorId, - chargingStation.getEnergyActiveImportRegisterByTransactionId(transactionId) - ); - await chargingStation.ocppRequestService.requestHandler< - OCPP16MeterValuesRequest, - OCPP16MeterValuesResponse - >(chargingStation, OCPP16RequestCommand.METER_VALUES, { - connectorId, - transactionId, - meterValue: [transactionEndMeterValue], - }); + const stopResponse = await chargingStation.stopTransactionOnConnector( + connectorId, + OCPP16StopTransactionReason.REMOTE + ); + if (stopResponse.idTagInfo?.status === OCPP16AuthorizationStatus.ACCEPTED) { + return Constants.OCPP_RESPONSE_ACCEPTED; } - await chargingStation.ocppRequestService.requestHandler< - OCPP16StopTransactionRequest, - OCPP16StopTransactionResponse - >(chargingStation, OCPP16RequestCommand.STOP_TRANSACTION, { - transactionId, - meterStop: chargingStation.getEnergyActiveImportRegisterByTransactionId(transactionId), - idTag: chargingStation.getTransactionIdTag(transactionId), - }); - return Constants.OCPP_RESPONSE_ACCEPTED; + return Constants.OCPP_RESPONSE_REJECTED; } } logger.warn( @@ -1175,17 +1117,17 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer chargingStation, OCPP16RequestCommand.BOOT_NOTIFICATION, { - chargePointModel: chargingStation.getBootNotificationRequest().chargePointModel, - chargePointVendor: chargingStation.getBootNotificationRequest().chargePointVendor, + chargePointModel: chargingStation.bootNotificationRequest.chargePointModel, + chargePointVendor: chargingStation.bootNotificationRequest.chargePointVendor, chargeBoxSerialNumber: - chargingStation.getBootNotificationRequest().chargeBoxSerialNumber, - firmwareVersion: chargingStation.getBootNotificationRequest().firmwareVersion, + chargingStation.bootNotificationRequest.chargeBoxSerialNumber, + firmwareVersion: chargingStation.bootNotificationRequest.firmwareVersion, chargePointSerialNumber: - chargingStation.getBootNotificationRequest().chargePointSerialNumber, - iccid: chargingStation.getBootNotificationRequest().iccid, - imsi: chargingStation.getBootNotificationRequest().imsi, - meterSerialNumber: chargingStation.getBootNotificationRequest().meterSerialNumber, - meterType: chargingStation.getBootNotificationRequest().meterType, + chargingStation.bootNotificationRequest.chargePointSerialNumber, + iccid: chargingStation.bootNotificationRequest.iccid, + imsi: chargingStation.bootNotificationRequest.imsi, + meterSerialNumber: chargingStation.bootNotificationRequest.meterSerialNumber, + meterType: chargingStation.bootNotificationRequest.meterType, }, { skipBufferingOnError: true, triggerMessage: true } )