X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Focpp%2F2.0%2FOCPP20ResponseService.ts;h=9851d3339371d8fe3e47cb7a5dcaa835d7bcace0;hb=9388120364d5a2f3b9103f05802e1756d2dad04f;hp=6ab91c074d01ec4f24b01a4c5fbdffb374ad1fa9;hpb=4c3f6c20f9416e148a3d26b6a06acc13274ab469;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ocpp/2.0/OCPP20ResponseService.ts b/src/charging-station/ocpp/2.0/OCPP20ResponseService.ts index 6ab91c07..9851d333 100644 --- a/src/charging-station/ocpp/2.0/OCPP20ResponseService.ts +++ b/src/charging-station/ocpp/2.0/OCPP20ResponseService.ts @@ -5,6 +5,7 @@ import type { ValidateFunction } from 'ajv' import { addConfigurationKey, type ChargingStation } from '../../../charging-station/index.js' import { OCPPError } from '../../../exception/index.js' import { + ChargingStationEvents, ErrorType, type JsonType, type OCPP20BootNotificationResponse, @@ -141,7 +142,7 @@ export class OCPP20ResponseService extends OCPPResponseService { // Throw exception throw new OCPPError( ErrorType.NOT_IMPLEMENTED, - `'${commandName}' is not implemented to handle response PDU ${JSON.stringify( + `${commandName} is not implemented to handle response PDU ${JSON.stringify( payload, undefined, 2 @@ -182,17 +183,23 @@ export class OCPP20ResponseService extends OCPPResponseService { chargingStation: ChargingStation, payload: OCPP20BootNotificationResponse ): void { - if (payload.status === RegistrationStatusEnumType.ACCEPTED) { - addConfigurationKey( - chargingStation, - OCPP20OptionalVariableName.HeartbeatInterval, - payload.interval.toString(), - {}, - { overwrite: true, save: true } - ) - OCPP20ServiceUtils.startHeartbeatInterval(chargingStation, payload.interval) - } if (Object.values(RegistrationStatusEnumType).includes(payload.status)) { + chargingStation.bootNotificationResponse = payload + if (chargingStation.isRegistered()) { + chargingStation.emit(ChargingStationEvents.registered) + if (chargingStation.inAcceptedState()) { + addConfigurationKey( + chargingStation, + OCPP20OptionalVariableName.HeartbeatInterval, + payload.interval.toString(), + {}, + { overwrite: true, save: true } + ) + chargingStation.emit(ChargingStationEvents.accepted) + } + } else if (chargingStation.inRejectedState()) { + chargingStation.emit(ChargingStationEvents.rejected) + } const logMsg = `${chargingStation.logPrefix()} Charging station in '${ payload.status }' state on the central server` @@ -200,6 +207,7 @@ export class OCPP20ResponseService extends OCPPResponseService { ? logger.warn(logMsg) : logger.info(logMsg) } else { + delete chargingStation.bootNotificationResponse logger.error( `${chargingStation.logPrefix()} Charging station boot notification response received: %j with undefined registration status`, payload