X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Focpp%2FOCPPServiceUtils.ts;h=b4a7e3241a94aaa58204b15d782a19ea910950db;hb=d4004f32353ed1ca6078154d6f4f450493c4ba51;hp=64fe38eaacdc39f7d45745cf89c743abd8ab4a58;hpb=ae725be37ef803522ad393a6a5d9d8f15616c6bb;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ocpp/OCPPServiceUtils.ts b/src/charging-station/ocpp/OCPPServiceUtils.ts index 64fe38ea..b4a7e324 100644 --- a/src/charging-station/ocpp/OCPPServiceUtils.ts +++ b/src/charging-station/ocpp/OCPPServiceUtils.ts @@ -88,9 +88,9 @@ export class OCPPServiceUtils { return true; } else if ( isRequestCommand === true && - chargingStation.stationInfo?.commandsSupport?.outgoingCommands + chargingStation.stationInfo?.commandsSupport?.outgoingCommands?.[command] ) { - return chargingStation.stationInfo?.commandsSupport?.outgoingCommands[command] ?? false; + return chargingStation.stationInfo?.commandsSupport?.outgoingCommands[command]; } logger.error(`${chargingStation.logPrefix()} Unknown outgoing OCPP command '${command}'`); return false; @@ -109,9 +109,9 @@ export class OCPPServiceUtils { return true; } else if ( isIncomingRequestCommand === true && - chargingStation.stationInfo?.commandsSupport?.incomingCommands + chargingStation.stationInfo?.commandsSupport?.incomingCommands?.[command] ) { - return chargingStation.stationInfo?.commandsSupport?.incomingCommands[command] ?? false; + return chargingStation.stationInfo?.commandsSupport?.incomingCommands[command]; } logger.error(`${chargingStation.logPrefix()} Unknown incoming OCPP command '${command}'`); return false; @@ -124,8 +124,11 @@ export class OCPPServiceUtils { const isMessageTrigger = Object.values(MessageTrigger).includes(messageTrigger); if (isMessageTrigger === true && !chargingStation.stationInfo?.messageTriggerSupport) { return true; - } else if (isMessageTrigger === true && chargingStation.stationInfo?.messageTriggerSupport) { - return chargingStation.stationInfo?.messageTriggerSupport[messageTrigger] ?? false; + } else if ( + isMessageTrigger === true && + chargingStation.stationInfo?.messageTriggerSupport?.[messageTrigger] + ) { + return chargingStation.stationInfo?.messageTriggerSupport[messageTrigger]; } logger.error( `${chargingStation.logPrefix()} Unknown incoming OCPP message trigger '${messageTrigger}'`, @@ -227,20 +230,23 @@ export class OCPPServiceUtils { connectorId: number, idTag: string, ): Promise { - let authorized = false; - if (OCPPServiceUtils.isIdTagLocalAuthorized(chargingStation, idTag)) { + if (!chargingStation.getLocalAuthListEnabled() && !chargingStation.getRemoteAuthorization()) { + logger.warn( + `${chargingStation.logPrefix()} The charging station expects to authorize RFID tags but nor local authorization nor remote authorization are enabled. Misbehavior may occur`, + ); + } + if ( + chargingStation.getLocalAuthListEnabled() === true && + OCPPServiceUtils.isIdTagLocalAuthorized(chargingStation, idTag) + ) { const connectorStatus: ConnectorStatus = chargingStation.getConnectorStatus(connectorId)!; connectorStatus.localAuthorizeIdTag = idTag; connectorStatus.idTagLocalAuthorized = true; - authorized = true; - } else { - authorized = await OCPPServiceUtils.isIdTagRemoteAuthorized( - chargingStation, - connectorId, - idTag, - ); + return true; + } else if (chargingStation.getRemoteAuthorization()) { + return await OCPPServiceUtils.isIdTagRemoteAuthorized(chargingStation, connectorId, idTag); } - return authorized; + return false; } protected static checkConnectorStatusTransition( @@ -374,7 +380,7 @@ export class OCPPServiceUtils { return sampledValueTemplates[index]; } else if ( !phase && - !sampledValueTemplates[index].phase && + !sampledValueTemplates[index]?.phase && sampledValueTemplates[index]?.measurand === measurand && getConfigurationKey( chargingStation, @@ -384,8 +390,8 @@ export class OCPPServiceUtils { return sampledValueTemplates[index]; } else if ( measurand === MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER && - (!sampledValueTemplates[index].measurand || - sampledValueTemplates[index].measurand === measurand) + (!sampledValueTemplates[index]?.measurand || + sampledValueTemplates[index]?.measurand === measurand) ) { return sampledValueTemplates[index]; } @@ -403,10 +409,7 @@ export class OCPPServiceUtils { protected static getLimitFromSampledValueTemplateCustomValue( value: string, limit: number, - options: { limitationEnabled?: boolean; unitMultiplier?: number } = { - limitationEnabled: true, - unitMultiplier: 1, - }, + options?: { limitationEnabled?: boolean; unitMultiplier?: number }, ): number { options = { ...{ @@ -424,7 +427,6 @@ export class OCPPServiceUtils { private static isIdTagLocalAuthorized(chargingStation: ChargingStation, idTag: string): boolean { return ( - chargingStation.getLocalAuthListEnabled() === true && chargingStation.hasIdTags() === true && isNotEmptyString( chargingStation.idTagsCache