createSerialNumber,
getAmperageLimitationUnitDivider,
getBootConnectorStatus,
- getChargingStationConnectorChargingProfilesPowerLimit,
+ getChargingStationChargingProfilesLimit,
getChargingStationId,
+ getConnectorChargingProfilesLimit,
getDefaultVoltageOut,
getHashId,
getIdTagsFile,
hasFeatureProfile,
hasReservationExpired,
initializeConnectorsMapStatus,
- prepareDatesInConnectorStatus,
+ prepareConnectorStatus,
propagateSerialNumber,
setChargingStationOptions,
stationTemplateToStationInfo,
}
public getConnectorMaximumAvailablePower (connectorId: number): number {
- let connectorAmperageLimitationPowerLimit: number | undefined
+ let connectorAmperageLimitationLimit: number | undefined
const amperageLimitation = this.getAmperageLimitation()
if (
amperageLimitation != null &&
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
amperageLimitation < this.stationInfo!.maximumAmperage!
) {
- connectorAmperageLimitationPowerLimit =
+ connectorAmperageLimitationLimit =
(this.stationInfo?.currentOutType === CurrentType.AC
? ACElectricUtils.powerTotal(
this.getNumberOfPhases(),
}
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const connectorMaximumPower = this.stationInfo!.maximumPower! / this.powerDivider!
- const connectorChargingProfilesPowerLimit =
- getChargingStationConnectorChargingProfilesPowerLimit(this, connectorId)
+ const chargingStationChargingProfilesLimit =
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+ getChargingStationChargingProfilesLimit(this)! / this.powerDivider!
+ const connectorChargingProfilesLimit = getConnectorChargingProfilesLimit(this, connectorId)
return min(
isNaN(connectorMaximumPower) ? Number.POSITIVE_INFINITY : connectorMaximumPower,
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- isNaN(connectorAmperageLimitationPowerLimit!)
+ isNaN(connectorAmperageLimitationLimit!)
? Number.POSITIVE_INFINITY
: // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- connectorAmperageLimitationPowerLimit!,
+ connectorAmperageLimitationLimit!,
+ isNaN(chargingStationChargingProfilesLimit)
+ ? Number.POSITIVE_INFINITY
+ : chargingStationChargingProfilesLimit,
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- isNaN(connectorChargingProfilesPowerLimit!)
+ isNaN(connectorChargingProfilesLimit!)
? Number.POSITIVE_INFINITY
: // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- connectorChargingProfilesPowerLimit!
+ connectorChargingProfilesLimit!
)
}
}
}
+ public restartMeterValues (connectorId: number, interval: number): void {
+ this.stopMeterValues(connectorId)
+ this.startMeterValues(connectorId, interval)
+ }
+
private add (): void {
this.emit(ChargingStationEvents.added)
}
for (const [connectorId, connectorStatus] of configuration.connectorsStatus.entries()) {
this.connectors.set(
connectorId,
- prepareDatesInConnectorStatus(clone<ConnectorStatus>(connectorStatus))
+ prepareConnectorStatus(clone<ConnectorStatus>(connectorStatus))
)
}
} else if (configuration.evsesStatus != null && configuration.connectorsStatus == null) {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
evseStatusConfiguration.connectorsStatus!.map((connectorStatus, connectorId) => [
connectorId,
- prepareDatesInConnectorStatus(connectorStatus)
+ prepareConnectorStatus(connectorStatus)
])
)
})
}
throw new OCPPError(
ErrorType.PROTOCOL_ERROR,
- `Cached request for message id ${messageId} ${getMessageTypeString(
+ `Cached request for message id '${messageId}' ${getMessageTypeString(
messageType
)} is not an array`,
undefined,
private async handleIncomingMessage (request: IncomingRequest): Promise<void> {
const [messageType, messageId, commandName, commandPayload] = request
+ if (this.requests.has(messageId)) {
+ throw new OCPPError(
+ ErrorType.SECURITY_ERROR,
+ `Received message with duplicate message id '${messageId}'`,
+ commandName,
+ commandPayload
+ )
+ }
if (this.stationInfo?.enableStatistics === true) {
this.performanceStatistics?.addRequestStatistic(commandName, messageType)
}
// Error
throw new OCPPError(
ErrorType.INTERNAL_ERROR,
- `Response for unknown message id ${messageId}`,
+ `Response for unknown message id '${messageId}'`,
undefined,
commandPayload
)
// Error
throw new OCPPError(
ErrorType.INTERNAL_ERROR,
- `Error response for unknown message id ${messageId}`,
+ `Error response for unknown message id '${messageId}'`,
undefined,
{ errorType, errorMessage, errorDetails }
)
}
if (!(error instanceof OCPPError)) {
logger.warn(
- `${this.logPrefix()} Error thrown at incoming OCPP command '${
+ `${this.logPrefix()} Error thrown at incoming OCPP command ${
commandName ?? requestCommandName ?? Constants.UNKNOWN_OCPP_COMMAND
// eslint-disable-next-line @typescript-eslint/no-base-to-string
- }' message '${data.toString()}' handling is not an OCPPError:`,
+ } message '${data.toString()}' handling is not an OCPPError:`,
error
)
}