From d627f8ef31d97da80f4de5ed0cb9386472f51bbe Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Wed, 29 May 2024 22:07:53 +0200 Subject: [PATCH] fix: start heartbeat once MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- src/charging-station/ChargingStation.ts | 6 +++- .../ocpp/1.6/OCPP16ResponseService.ts | 31 +++++++++---------- .../ocpp/2.0/OCPP20ResponseService.ts | 17 +++++----- src/charging-station/ocpp/OCPPServiceUtils.ts | 8 ----- 4 files changed, 26 insertions(+), 36 deletions(-) diff --git a/src/charging-station/ChargingStation.ts b/src/charging-station/ChargingStation.ts index 7cfb70f2..2d934e06 100644 --- a/src/charging-station/ChargingStation.ts +++ b/src/charging-station/ChargingStation.ts @@ -2224,7 +2224,11 @@ export class ChargingStation extends EventEmitter { // Start WebSocket ping this.startWebSocketPing() // Start heartbeat - this.startHeartbeat() + if (this.heartbeatSetInterval == null) { + this.startHeartbeat() + } else if (this.getHeartbeatInterval() !== this.bootNotificationResponse?.interval) { + this.restartHeartbeat() + } // Initialize connectors status if (this.hasEvses) { for (const [evseId, evseStatus] of this.evses) { diff --git a/src/charging-station/ocpp/1.6/OCPP16ResponseService.ts b/src/charging-station/ocpp/1.6/OCPP16ResponseService.ts index 46c6d401..409f382e 100644 --- a/src/charging-station/ocpp/1.6/OCPP16ResponseService.ts +++ b/src/charging-station/ocpp/1.6/OCPP16ResponseService.ts @@ -510,29 +510,26 @@ export class OCPP16ResponseService extends OCPPResponseService { chargingStation: ChargingStation, payload: OCPP16BootNotificationResponse ): void { - if (payload.status === RegistrationStatusEnumType.ACCEPTED) { - addConfigurationKey( - chargingStation, - OCPP16StandardParametersKey.HeartbeatInterval, - payload.interval.toString(), - {}, - { overwrite: true, save: true } - ) - addConfigurationKey( - chargingStation, - OCPP16StandardParametersKey.HeartBeatInterval, - payload.interval.toString(), - { visible: false }, - { overwrite: true, save: true } - ) - OCPP16ServiceUtils.startHeartbeatInterval(chargingStation, payload.interval) - } if (Object.values(RegistrationStatusEnumType).includes(payload.status)) { chargingStation.bootNotificationResponse = payload if (chargingStation.isRegistered()) { chargingStation.emit(ChargingStationEvents.registered) if (chargingStation.inAcceptedState()) { chargingStation.emit(ChargingStationEvents.accepted) + addConfigurationKey( + chargingStation, + OCPP16StandardParametersKey.HeartbeatInterval, + payload.interval.toString(), + {}, + { overwrite: true, save: true } + ) + addConfigurationKey( + chargingStation, + OCPP16StandardParametersKey.HeartBeatInterval, + payload.interval.toString(), + { visible: false }, + { overwrite: true, save: true } + ) } } else if (chargingStation.inRejectedState()) { chargingStation.emit(ChargingStationEvents.rejected) diff --git a/src/charging-station/ocpp/2.0/OCPP20ResponseService.ts b/src/charging-station/ocpp/2.0/OCPP20ResponseService.ts index 1eac7a88..77546cfa 100644 --- a/src/charging-station/ocpp/2.0/OCPP20ResponseService.ts +++ b/src/charging-station/ocpp/2.0/OCPP20ResponseService.ts @@ -183,22 +183,19 @@ 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()) { chargingStation.emit(ChargingStationEvents.accepted) + addConfigurationKey( + chargingStation, + OCPP20OptionalVariableName.HeartbeatInterval, + payload.interval.toString(), + {}, + { overwrite: true, save: true } + ) } } else if (chargingStation.inRejectedState()) { chargingStation.emit(ChargingStationEvents.rejected) diff --git a/src/charging-station/ocpp/OCPPServiceUtils.ts b/src/charging-station/ocpp/OCPPServiceUtils.ts index 9b2fee9c..69de60cf 100644 --- a/src/charging-station/ocpp/OCPPServiceUtils.ts +++ b/src/charging-station/ocpp/OCPPServiceUtils.ts @@ -1379,14 +1379,6 @@ export class OCPPServiceUtils { } } - public static startHeartbeatInterval (chargingStation: ChargingStation, interval: number): void { - if (chargingStation.heartbeatSetInterval == null) { - chargingStation.startHeartbeat() - } else if (chargingStation.getHeartbeatInterval() !== interval) { - chargingStation.restartHeartbeat() - } - } - protected static parseJsonSchemaFile( relativePath: string, ocppVersion: OCPPVersion, -- 2.43.0