-import type ChargingStation from './ChargingStation';
-import { ChargingStationConfigurationUtils } from './ChargingStationConfigurationUtils';
-import { OCPP16ServiceUtils } from './ocpp/1.6/OCPP16ServiceUtils';
-import WorkerBroadcastChannel from './WorkerBroadcastChannel';
-import BaseError from '../exception/BaseError';
-import type OCPPError from '../exception/OCPPError';
-import { StandardParametersKey } from '../types/ocpp/Configuration';
import {
- type BootNotificationRequest,
- type DataTransferRequest,
- type DiagnosticsStatusNotificationRequest,
- type FirmwareStatusNotificationRequest,
- type HeartbeatRequest,
- type MeterValuesRequest,
- RequestCommand,
- RequestParams,
- type StatusNotificationRequest,
-} from '../types/ocpp/Requests';
+ type ChargingStation,
+ ChargingStationConfigurationUtils,
+ WorkerBroadcastChannel,
+} from './internal';
+import { OCPP16ServiceUtils } from './ocpp';
+import { BaseError, type OCPPError } from '../exception';
import {
+ AuthorizationStatus,
+ type AuthorizeRequest,
+ type AuthorizeResponse,
+ type BootNotificationRequest,
type BootNotificationResponse,
+ BroadcastChannelProcedureName,
+ type BroadcastChannelRequest,
+ type BroadcastChannelRequestPayload,
+ type BroadcastChannelResponsePayload,
+ type DataTransferRequest,
type DataTransferResponse,
DataTransferStatus,
+ type DiagnosticsStatusNotificationRequest,
type DiagnosticsStatusNotificationResponse,
+ type FirmwareStatusNotificationRequest,
type FirmwareStatusNotificationResponse,
+ type HeartbeatRequest,
type HeartbeatResponse,
+ type MessageEvent,
+ type MeterValuesRequest,
type MeterValuesResponse,
RegistrationStatusEnumType,
- type StatusNotificationResponse,
-} from '../types/ocpp/Responses';
-import {
- AuthorizationStatus,
- type AuthorizeRequest,
- type AuthorizeResponse,
+ RequestCommand,
+ type RequestParams,
+ ResponseStatus,
+ StandardParametersKey,
type StartTransactionRequest,
type StartTransactionResponse,
+ type StatusNotificationRequest,
+ type StatusNotificationResponse,
type StopTransactionRequest,
type StopTransactionResponse,
-} from '../types/ocpp/Transaction';
-import { ResponseStatus } from '../types/UIProtocol';
-import {
- BroadcastChannelProcedureName,
- type BroadcastChannelRequest,
- type BroadcastChannelRequestPayload,
- type BroadcastChannelResponsePayload,
- type MessageEvent,
-} from '../types/WorkerBroadcastChannel';
-import Constants from '../utils/Constants';
-import logger from '../utils/Logger';
-import Utils from '../utils/Utils';
+} from '../types';
+import { Constants, Utils, logger } from '../utils';
const moduleName = 'ChargingStationWorkerBroadcastChannel';
requestPayload?: BroadcastChannelRequestPayload
) => Promise<CommandResponse | void> | void;
-export default class ChargingStationWorkerBroadcastChannel extends WorkerBroadcastChannel {
+export class ChargingStationWorkerBroadcastChannel extends WorkerBroadcastChannel {
private readonly commandHandlers: Map<BroadcastChannelProcedureName, CommandHandler>;
private readonly chargingStation: ChargingStation;
[
BroadcastChannelProcedureName.START_AUTOMATIC_TRANSACTION_GENERATOR,
(requestPayload?: BroadcastChannelRequestPayload) =>
- this.chargingStation.startAutomaticTransactionGenerator(requestPayload.connectorIds),
+ this.chargingStation.startAutomaticTransactionGenerator(requestPayload?.connectorIds),
],
[
BroadcastChannelProcedureName.STOP_AUTOMATIC_TRANSACTION_GENERATOR,
(requestPayload?: BroadcastChannelRequestPayload) =>
- this.chargingStation.stopAutomaticTransactionGenerator(requestPayload.connectorIds),
+ this.chargingStation.stopAutomaticTransactionGenerator(requestPayload?.connectorIds),
+ ],
+ [
+ BroadcastChannelProcedureName.SET_SUPERVISION_URL,
+ (requestPayload?: BroadcastChannelRequestPayload) =>
+ this.chargingStation.setSupervisionUrl(requestPayload?.url as string),
],
[
BroadcastChannelProcedureName.START_TRANSACTION,
this.chargingStation.ocppRequestService.requestHandler<
StopTransactionRequest,
StartTransactionResponse
- >(this.chargingStation, RequestCommand.STOP_TRANSACTION, {
- meterStop: this.chargingStation.getEnergyActiveImportRegisterByTransactionId(
- requestPayload.transactionId,
- true
- ),
- ...requestPayload,
- requestParams,
- }),
+ >(
+ this.chargingStation,
+ RequestCommand.STOP_TRANSACTION,
+ {
+ meterStop: this.chargingStation.getEnergyActiveImportRegisterByTransactionId(
+ requestPayload.transactionId,
+ true
+ ),
+ ...requestPayload,
+ },
+ requestParams
+ ),
],
[
BroadcastChannelProcedureName.AUTHORIZE,
return this.chargingStation.ocppRequestService.requestHandler<
MeterValuesRequest,
MeterValuesResponse
- >(this.chargingStation, RequestCommand.METER_VALUES, {
- meterValue: [
- // FIXME: Implement OCPP version agnostic helpers
- OCPP16ServiceUtils.buildMeterValue(
- this.chargingStation,
- requestPayload.connectorId,
- this.chargingStation.getConnectorStatus(requestPayload.connectorId)?.transactionId,
- configuredMeterValueSampleInterval
- ? Utils.convertToInt(configuredMeterValueSampleInterval.value) * 1000
- : Constants.DEFAULT_METER_VALUES_INTERVAL
- ),
- ],
- ...requestPayload,
- requestParams,
- });
+ >(
+ this.chargingStation,
+ RequestCommand.METER_VALUES,
+ {
+ meterValue: [
+ // FIXME: Implement OCPP version agnostic helpers
+ OCPP16ServiceUtils.buildMeterValue(
+ this.chargingStation,
+ requestPayload.connectorId,
+ this.chargingStation.getConnectorStatus(requestPayload.connectorId)
+ ?.transactionId,
+ configuredMeterValueSampleInterval
+ ? Utils.convertToInt(configuredMeterValueSampleInterval.value) * 1000
+ : Constants.DEFAULT_METER_VALUES_INTERVAL
+ ),
+ ],
+ ...requestPayload,
+ },
+ requestParams
+ );
},
],
[
}
const [uuid, command, requestPayload] = validatedMessageEvent.data as BroadcastChannelRequest;
if (
- requestPayload?.hashIds !== undefined &&
+ !Utils.isNullOrUndefined(requestPayload?.hashIds) &&
requestPayload?.hashIds?.includes(this.chargingStation.stationInfo.hashId) === false
) {
return;
}
- if (requestPayload?.hashId !== undefined) {
+ if (!Utils.isNullOrUndefined(requestPayload?.hashId)) {
logger.error(
`${this.chargingStation.logPrefix()} ${moduleName}.requestHandler: 'hashId' field usage in PDU is deprecated, use 'hashIds' array instead`
);
try {
commandResponse = await this.commandHandler(command, requestPayload);
if (
- commandResponse === undefined ||
- commandResponse === null ||
+ Utils.isNullOrUndefined(commandResponse) ||
Utils.isEmptyObject(commandResponse as CommandResponse)
) {
responsePayload = {