X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Focpp%2F1.6%2FOCPP16ResponseService.ts;h=ae8b6287bd8757e01b134cfd2e50a67167bae383;hb=3b0ed03465692b766a2112aabbd3241d5bdc702d;hp=3816c54fd2f35a201508dc72172fda679e60ed25;hpb=be4c670224282bebd69a75fec8fa45b7666634ff;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ocpp/1.6/OCPP16ResponseService.ts b/src/charging-station/ocpp/1.6/OCPP16ResponseService.ts index 3816c54f..ae8b6287 100644 --- a/src/charging-station/ocpp/1.6/OCPP16ResponseService.ts +++ b/src/charging-station/ocpp/1.6/OCPP16ResponseService.ts @@ -14,7 +14,6 @@ import { } from '../../../charging-station'; import { OCPPError } from '../../../exception'; import { - type ChangeAvailabilityResponse, type ChangeConfigurationResponse, type ClearChargingProfileResponse, ErrorType, @@ -27,6 +26,7 @@ import { type OCPP16AuthorizeRequest, type OCPP16AuthorizeResponse, type OCPP16BootNotificationResponse, + type OCPP16ChangeAvailabilityResponse, OCPP16ChargePointStatus, type OCPP16DataTransferResponse, type OCPP16DiagnosticsStatusNotificationResponse, @@ -48,6 +48,7 @@ import { type OCPP16UpdateFirmwareResponse, OCPPVersion, RegistrationStatusEnumType, + ReservationTerminationReason, type ResponseHandler, type SetChargingProfileResponse, type UnlockConnectorResponse, @@ -208,7 +209,7 @@ export class OCPP16ResponseService extends OCPPResponseService { ], [ OCPP16IncomingRequestCommand.CHANGE_AVAILABILITY, - OCPP16ServiceUtils.parseJsonSchemaFile( + OCPP16ServiceUtils.parseJsonSchemaFile( 'assets/json-schemas/ocpp/1.6/ChangeAvailabilityResponse.json', moduleName, 'constructor', @@ -470,8 +471,11 @@ export class OCPP16ResponseService extends OCPPResponseService { } const authorizeConnectorIdDefined = !isNullOrUndefined(authorizeConnectorId); if (payload.idTagInfo.status === OCPP16AuthorizationStatus.ACCEPTED) { - authorizeConnectorIdDefined && - (chargingStation.getConnectorStatus(authorizeConnectorId!)!.idTagAuthorized = true); + if (authorizeConnectorIdDefined) { + // chargingStation.getConnectorStatus(authorizeConnectorId!)!.authorizeIdTag = + // requestPayload.idTag; + chargingStation.getConnectorStatus(authorizeConnectorId!)!.idTagAuthorized = true; + } logger.debug( `${chargingStation.logPrefix()} idTag '${requestPayload.idTag}' accepted${ authorizeConnectorIdDefined ? ` on connector id ${authorizeConnectorId}` : '' @@ -510,7 +514,7 @@ export class OCPP16ResponseService extends OCPPResponseService { true && chargingStation.getAuthorizeRemoteTxRequests() === true && chargingStation.getLocalAuthListEnabled() === true && - chargingStation.hasIdTags() && + chargingStation.hasIdTags() === true && chargingStation.getConnectorStatus(transactionConnectorId)?.idTagLocalAuthorized === false ) { logger.error( @@ -525,7 +529,7 @@ export class OCPP16ResponseService extends OCPPResponseService { chargingStation.getConnectorStatus(transactionConnectorId)?.transactionRemoteStarted === true && chargingStation.getAuthorizeRemoteTxRequests() === true && - chargingStation.getMustAuthorizeAtRemoteStart() === true && + chargingStation.getRemoteAuthorization() === true && chargingStation.getConnectorStatus(transactionConnectorId)?.idTagLocalAuthorized === false && chargingStation.getConnectorStatus(transactionConnectorId)?.idTagAuthorized === false ) { @@ -609,7 +613,7 @@ export class OCPP16ResponseService extends OCPPResponseService { ); return; } - if (!Number.isInteger(payload.transactionId)) { + if (!Number.isSafeInteger(payload.transactionId)) { logger.warn( `${chargingStation.logPrefix()} Trying to start a transaction on connector id ${transactionConnectorId.toString()} with a non integer transaction id ${ payload.transactionId @@ -635,6 +639,21 @@ export class OCPP16ResponseService extends OCPPResponseService { transactionConnectorId, requestPayload.meterStart, ); + const reservedOnConnectorZero = + chargingStation.getConnectorStatus(0)?.status === OCPP16ChargePointStatus.Reserved; + if ( + chargingStation.getConnectorStatus(transactionConnectorId)?.status === + OCPP16ChargePointStatus.Reserved || + reservedOnConnectorZero + ) { + await chargingStation.removeReservation( + chargingStation.getReservationBy( + 'connectorId', + reservedOnConnectorZero ? 0 : transactionConnectorId, + )!, + ReservationTerminationReason.TRANSACTION_STARTED, + ); + } chargingStation.getBeginEndMeterValues() && (await chargingStation.ocppRequestService.requestHandler< OCPP16MeterValuesRequest,