// }
super(OCPPVersion.VERSION_16);
this.responseHandlers = new Map<OCPP16RequestCommand, ResponseHandler>([
- [OCPP16RequestCommand.BOOT_NOTIFICATION, this.handleResponseBootNotification.bind(this)],
- [OCPP16RequestCommand.HEARTBEAT, this.emptyResponseHandler.bind(this)],
- [OCPP16RequestCommand.AUTHORIZE, this.handleResponseAuthorize.bind(this)],
- [OCPP16RequestCommand.START_TRANSACTION, this.handleResponseStartTransaction.bind(this)],
- [OCPP16RequestCommand.STOP_TRANSACTION, this.handleResponseStopTransaction.bind(this)],
- [OCPP16RequestCommand.STATUS_NOTIFICATION, this.emptyResponseHandler.bind(this)],
- [OCPP16RequestCommand.METER_VALUES, this.emptyResponseHandler.bind(this)],
- [OCPP16RequestCommand.DIAGNOSTICS_STATUS_NOTIFICATION, this.emptyResponseHandler.bind(this)],
- [OCPP16RequestCommand.DATA_TRANSFER, this.emptyResponseHandler.bind(this)],
- [OCPP16RequestCommand.FIRMWARE_STATUS_NOTIFICATION, this.emptyResponseHandler.bind(this)],
+ [
+ OCPP16RequestCommand.BOOT_NOTIFICATION,
+ this.handleResponseBootNotification.bind(this) as ResponseHandler,
+ ],
+ [OCPP16RequestCommand.HEARTBEAT, this.emptyResponseHandler.bind(this) as ResponseHandler],
+ [OCPP16RequestCommand.AUTHORIZE, this.handleResponseAuthorize.bind(this) as ResponseHandler],
+ [
+ OCPP16RequestCommand.START_TRANSACTION,
+ this.handleResponseStartTransaction.bind(this) as ResponseHandler,
+ ],
+ [
+ OCPP16RequestCommand.STOP_TRANSACTION,
+ this.handleResponseStopTransaction.bind(this) as ResponseHandler,
+ ],
+ [
+ OCPP16RequestCommand.STATUS_NOTIFICATION,
+ this.emptyResponseHandler.bind(this) as ResponseHandler,
+ ],
+ [OCPP16RequestCommand.METER_VALUES, this.emptyResponseHandler.bind(this) as ResponseHandler],
+ [
+ OCPP16RequestCommand.DIAGNOSTICS_STATUS_NOTIFICATION,
+ this.emptyResponseHandler.bind(this) as ResponseHandler,
+ ],
+ [OCPP16RequestCommand.DATA_TRANSFER, this.emptyResponseHandler.bind(this) as ResponseHandler],
+ [
+ OCPP16RequestCommand.FIRMWARE_STATUS_NOTIFICATION,
+ this.emptyResponseHandler.bind(this) as ResponseHandler,
+ ],
]);
this.jsonSchemas = new Map<OCPP16RequestCommand, JSONSchemaType<JsonObject>>([
[
) => boolean;
}
- public async responseHandler(
+ public async responseHandler<ReqType extends JsonType, ResType extends JsonType>(
chargingStation: ChargingStation,
commandName: OCPP16RequestCommand,
- payload: JsonType,
- requestPayload: JsonType,
+ payload: ResType,
+ requestPayload: ReqType,
): Promise<void> {
if (
chargingStation.isRegistered() === true ||
) {
try {
this.validatePayload(chargingStation, commandName, payload);
- await this.responseHandlers.get(commandName)(chargingStation, payload, requestPayload);
+ await this.responseHandlers.get(commandName)!(chargingStation, payload, requestPayload);
} catch (error) {
logger.error(
`${chargingStation.logPrefix()} ${moduleName}.responseHandler: Handle response error:`,
return this.validateResponsePayload(
chargingStation,
commandName,
- this.jsonSchemas.get(commandName),
+ this.jsonSchemas.get(commandName)!,
payload,
);
}
payload: OCPP16AuthorizeResponse,
requestPayload: OCPP16AuthorizeRequest,
): void {
- let authorizeConnectorId: number;
+ let authorizeConnectorId: number | undefined;
if (chargingStation.hasEvses) {
for (const [evseId, evseStatus] of chargingStation.evses) {
if (evseId > 0) {
const authorizeConnectorIdDefined = !isNullOrUndefined(authorizeConnectorId);
if (payload.idTagInfo.status === OCPP16AuthorizationStatus.ACCEPTED) {
authorizeConnectorIdDefined &&
- (chargingStation.getConnectorStatus(authorizeConnectorId).idTagAuthorized = true);
+ (chargingStation.getConnectorStatus(authorizeConnectorId!)!.idTagAuthorized = true);
logger.debug(
`${chargingStation.logPrefix()} idTag '${requestPayload.idTag}' accepted${
authorizeConnectorIdDefined ? ` on connector id ${authorizeConnectorId}` : ''
);
} else {
if (authorizeConnectorIdDefined) {
- chargingStation.getConnectorStatus(authorizeConnectorId).idTagAuthorized = false;
- delete chargingStation.getConnectorStatus(authorizeConnectorId)?.authorizeIdTag;
+ chargingStation.getConnectorStatus(authorizeConnectorId!)!.idTagAuthorized = false;
+ delete chargingStation.getConnectorStatus(authorizeConnectorId!)?.authorizeIdTag;
}
logger.debug(
`${chargingStation.logPrefix()} idTag '${requestPayload.idTag}' rejected with status '${
}
if (payload.idTagInfo?.status === OCPP16AuthorizationStatus.ACCEPTED) {
- chargingStation.getConnectorStatus(transactionConnectorId).transactionStarted = true;
- chargingStation.getConnectorStatus(transactionConnectorId).transactionId =
+ chargingStation.getConnectorStatus(transactionConnectorId)!.transactionStarted = true;
+ chargingStation.getConnectorStatus(transactionConnectorId)!.transactionId =
payload.transactionId;
- chargingStation.getConnectorStatus(transactionConnectorId).transactionIdTag =
+ chargingStation.getConnectorStatus(transactionConnectorId)!.transactionIdTag =
requestPayload.idTag;
chargingStation.getConnectorStatus(
transactionConnectorId,
- ).transactionEnergyActiveImportRegisterValue = 0;
- chargingStation.getConnectorStatus(transactionConnectorId).transactionBeginMeterValue =
+ )!.transactionEnergyActiveImportRegisterValue = 0;
+ chargingStation.getConnectorStatus(transactionConnectorId)!.transactionBeginMeterValue =
OCPP16ServiceUtils.buildTransactionBeginMeterValue(
chargingStation,
transactionConnectorId,
connectorId: transactionConnectorId,
transactionId: payload.transactionId,
meterValue: [
- chargingStation.getConnectorStatus(transactionConnectorId).transactionBeginMeterValue,
+ chargingStation.getConnectorStatus(transactionConnectorId)!.transactionBeginMeterValue,
],
- }));
+ } as OCPP16MeterValuesRequest));
await OCPP16ServiceUtils.sendAndSetConnectorStatus(
chargingStation,
transactionConnectorId,
chargingStation: ChargingStation,
connectorId: number,
): Promise<void> {
- resetConnectorStatus(chargingStation.getConnectorStatus(connectorId));
+ resetConnectorStatus(chargingStation.getConnectorStatus(connectorId)!);
chargingStation.stopMeterValues(connectorId);
parentPort?.postMessage(buildUpdatedMessage(chargingStation));
if (
meterValue: [
OCPP16ServiceUtils.buildTransactionEndMeterValue(
chargingStation,
- transactionConnectorId,
+ transactionConnectorId!,
requestPayload.meterStop,
),
],
}));
if (
chargingStation.isChargingStationAvailable() === false ||
- chargingStation.isConnectorAvailable(transactionConnectorId) === false
+ chargingStation.isConnectorAvailable(transactionConnectorId!) === false
) {
await OCPP16ServiceUtils.sendAndSetConnectorStatus(
chargingStation,
- transactionConnectorId,
+ transactionConnectorId!,
OCPP16ChargePointStatus.Unavailable,
);
} else {
await OCPP16ServiceUtils.sendAndSetConnectorStatus(
chargingStation,
- transactionConnectorId,
+ transactionConnectorId!,
OCPP16ChargePointStatus.Available,
);
}
if (chargingStation.stationInfo.powerSharedByConnectors) {
chargingStation.powerDivider--;
}
- resetConnectorStatus(chargingStation.getConnectorStatus(transactionConnectorId));
- chargingStation.stopMeterValues(transactionConnectorId);
+ resetConnectorStatus(chargingStation.getConnectorStatus(transactionConnectorId!)!);
+ chargingStation.stopMeterValues(transactionConnectorId!);
parentPort?.postMessage(buildUpdatedMessage(chargingStation));
const logMsg = `${chargingStation.logPrefix()} Transaction with id ${requestPayload.transactionId.toString()} STOPPED on ${
chargingStation.stationInfo.chargingStationId