X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Focpp%2F1.6%2FOCPP16ServiceUtils.ts;h=570708b74be0ba7f30b9f243bc613ccbe25dd584;hb=68220b423c52da387fdf41967dd8c738da0ff52e;hp=2d31c0512d9503cad411659805a3ae378054b70f;hpb=aa63c9b772ff17bce2febf68a57720eab96d5f8e;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ocpp/1.6/OCPP16ServiceUtils.ts b/src/charging-station/ocpp/1.6/OCPP16ServiceUtils.ts index 2d31c051..570708b7 100644 --- a/src/charging-station/ocpp/1.6/OCPP16ServiceUtils.ts +++ b/src/charging-station/ocpp/1.6/OCPP16ServiceUtils.ts @@ -18,6 +18,7 @@ import { hasReservationExpired } from '../../../charging-station/index.js' import { + type ConfigurationKey, type GenericResponse, type JsonType, OCPP16AuthorizationStatus, @@ -60,7 +61,7 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils { public static buildTransactionBeginMeterValue ( chargingStation: ChargingStation, connectorId: number, - meterStart: number + meterStart: number | undefined ): OCPP16MeterValue { const meterValue: OCPP16MeterValue = { timestamp: new Date(), @@ -125,7 +126,7 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils { OCPP16Constants.OCPP_AVAILABILITY_RESPONSE_ACCEPTED // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const connectorStatus = chargingStation.getConnectorStatus(connectorId)! - if (connectorStatus?.transactionStarted === true) { + if (connectorStatus.transactionStarted === true) { response = OCPP16Constants.OCPP_AVAILABILITY_RESPONSE_SCHEDULED } connectorStatus.availability = availabilityType @@ -165,19 +166,20 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils { } let cpReplaced = false if (isNotEmptyArray(chargingStation.getConnectorStatus(connectorId)?.chargingProfiles)) { - chargingStation - .getConnectorStatus(connectorId) - ?.chargingProfiles?.forEach((chargingProfile: OCPP16ChargingProfile, index: number) => { - if ( - chargingProfile.chargingProfileId === cp.chargingProfileId || - (chargingProfile.stackLevel === cp.stackLevel && - chargingProfile.chargingProfilePurpose === cp.chargingProfilePurpose) - ) { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - chargingStation.getConnectorStatus(connectorId)!.chargingProfiles![index] = cp - cpReplaced = true - } - }) + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + for (const [index, chargingProfile] of chargingStation + .getConnectorStatus(connectorId)! + .chargingProfiles!.entries()) { + if ( + chargingProfile.chargingProfileId === cp.chargingProfileId || + (chargingProfile.stackLevel === cp.stackLevel && + chargingProfile.chargingProfilePurpose === cp.chargingProfilePurpose) + ) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + chargingStation.getConnectorStatus(connectorId)!.chargingProfiles![index] = cp + cpReplaced = true + } + } } !cpReplaced && chargingStation.getConnectorStatus(connectorId)?.chargingProfiles?.push(cp) } @@ -431,6 +433,13 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils { } } + public static isConfigurationKeyVisible (key: ConfigurationKey): boolean { + if (key.visible == null) { + return true + } + return key.visible + } + public static hasReservation = ( chargingStation: ChargingStation, connectorId: number, @@ -443,11 +452,11 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils { OCPP16ChargePointStatus.Reserved && connectorReservation != null && !hasReservationExpired(connectorReservation) && - connectorReservation?.idTag === idTag) || + connectorReservation.idTag === idTag) || (chargingStation.getConnectorStatus(0)?.status === OCPP16ChargePointStatus.Reserved && chargingStationReservation != null && !hasReservationExpired(chargingStationReservation) && - chargingStationReservation?.idTag === idTag) + chargingStationReservation.idTag === idTag) ) { logger.debug( `${chargingStation.logPrefix()} Connector id ${connectorId} has a valid reservation for idTag ${idTag}: %j`,