- const connectorsConfigHash = crypto.createHash('sha256').update(JSON.stringify(this.stationInfo.Connectors) + maxConnectors.toString()).digest('hex');
- // FIXME: Handle shrinking the number of connectors
- if (!this.connectors || (this.connectors && this.connectorsConfigurationHash !== connectorsConfigHash)) {
- this.connectorsConfigurationHash = connectorsConfigHash;
- // Add connector Id 0
- let lastConnector = '0';
- for (lastConnector in this.stationInfo.Connectors) {
- if (Utils.convertToInt(lastConnector) === 0 && this.getUseConnectorId0() && this.stationInfo.Connectors[lastConnector]) {
- this.connectors[lastConnector] = Utils.cloneObject<Connector>(this.stationInfo.Connectors[lastConnector]);
- this.connectors[lastConnector].availability = AvailabilityType.OPERATIVE;
- if (Utils.isUndefined(this.connectors[lastConnector]?.chargingProfiles)) {
- this.connectors[lastConnector].chargingProfiles = [];
- }
+ if (this.stationInfo.autoRegister) {
+ this.bootNotificationResponse = {
+ currentTime: new Date().toISOString(),
+ interval: this.getHeartbeatInterval() / 1000,
+ status: RegistrationStatus.ACCEPTED,
+ };
+ }
+ this.stationInfo.powerDivider = this.getPowerDivider();
+ }
+
+ private initializeOcppConfiguration(): void {
+ if (
+ !ChargingStationConfigurationUtils.getConfigurationKey(
+ this,
+ StandardParametersKey.HeartbeatInterval
+ )
+ ) {
+ ChargingStationConfigurationUtils.addConfigurationKey(
+ this,
+ StandardParametersKey.HeartbeatInterval,
+ '0'
+ );
+ }
+ if (
+ !ChargingStationConfigurationUtils.getConfigurationKey(
+ this,
+ StandardParametersKey.HeartBeatInterval
+ )
+ ) {
+ ChargingStationConfigurationUtils.addConfigurationKey(
+ this,
+ StandardParametersKey.HeartBeatInterval,
+ '0',
+ { visible: false }
+ );
+ }
+ if (
+ this.getSupervisionUrlOcppConfiguration() &&
+ !ChargingStationConfigurationUtils.getConfigurationKey(this, this.getSupervisionUrlOcppKey())
+ ) {
+ ChargingStationConfigurationUtils.addConfigurationKey(
+ this,
+ this.getSupervisionUrlOcppKey(),
+ this.getConfiguredSupervisionUrl().href,
+ { reboot: true }
+ );
+ } else if (
+ !this.getSupervisionUrlOcppConfiguration() &&
+ ChargingStationConfigurationUtils.getConfigurationKey(this, this.getSupervisionUrlOcppKey())
+ ) {
+ ChargingStationConfigurationUtils.deleteConfigurationKey(
+ this,
+ this.getSupervisionUrlOcppKey(),
+ { save: false }
+ );
+ }
+ if (
+ this.stationInfo.amperageLimitationOcppKey &&
+ !ChargingStationConfigurationUtils.getConfigurationKey(
+ this,
+ this.stationInfo.amperageLimitationOcppKey
+ )
+ ) {
+ ChargingStationConfigurationUtils.addConfigurationKey(
+ this,
+ this.stationInfo.amperageLimitationOcppKey,
+ (
+ this.stationInfo.maximumAmperage *
+ ChargingStationUtils.getAmperageLimitationUnitDivider(this.stationInfo)
+ ).toString()
+ );
+ }
+ if (
+ !ChargingStationConfigurationUtils.getConfigurationKey(
+ this,
+ StandardParametersKey.SupportedFeatureProfiles
+ )
+ ) {
+ ChargingStationConfigurationUtils.addConfigurationKey(
+ this,
+ StandardParametersKey.SupportedFeatureProfiles,
+ `${SupportedFeatureProfiles.Core},${SupportedFeatureProfiles.FirmwareManagement},${SupportedFeatureProfiles.LocalAuthListManagement},${SupportedFeatureProfiles.SmartCharging},${SupportedFeatureProfiles.RemoteTrigger}`
+ );
+ }
+ ChargingStationConfigurationUtils.addConfigurationKey(
+ this,
+ StandardParametersKey.NumberOfConnectors,
+ this.getNumberOfConnectors().toString(),
+ { readonly: true },
+ { overwrite: true }
+ );
+ if (
+ !ChargingStationConfigurationUtils.getConfigurationKey(
+ this,
+ StandardParametersKey.MeterValuesSampledData
+ )
+ ) {
+ ChargingStationConfigurationUtils.addConfigurationKey(
+ this,
+ StandardParametersKey.MeterValuesSampledData,
+ MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER
+ );
+ }
+ if (
+ !ChargingStationConfigurationUtils.getConfigurationKey(
+ this,
+ StandardParametersKey.ConnectorPhaseRotation
+ )
+ ) {
+ const connectorPhaseRotation = [];
+ for (const connectorId of this.connectors.keys()) {
+ // AC/DC
+ if (connectorId === 0 && this.getNumberOfPhases() === 0) {
+ connectorPhaseRotation.push(`${connectorId}.${ConnectorPhaseRotation.RST}`);
+ } else if (connectorId > 0 && this.getNumberOfPhases() === 0) {
+ connectorPhaseRotation.push(`${connectorId}.${ConnectorPhaseRotation.NotApplicable}`);
+ // AC
+ } else if (connectorId > 0 && this.getNumberOfPhases() === 1) {
+ connectorPhaseRotation.push(`${connectorId}.${ConnectorPhaseRotation.NotApplicable}`);
+ } else if (connectorId > 0 && this.getNumberOfPhases() === 3) {
+ connectorPhaseRotation.push(`${connectorId}.${ConnectorPhaseRotation.RST}`);