}
return numberOfConnectors;
}
- return this.connectors.get(0) ? this.connectors.size - 1 : this.connectors.size;
+ return this.connectors.has(0) ? this.connectors.size - 1 : this.connectors.size;
}
public getNumberOfEvses(): number {
- return this.evses.size;
+ return this.evses.has(0) ? this.evses.size - 1 : this.evses.size;
}
public getConnectorStatus(connectorId: number): ConnectorStatus | undefined {
if (this.connectors?.size === 0 || connectorsConfigChanged) {
connectorsConfigChanged && this.connectors.clear();
this.connectorsConfigurationHash = connectorsConfigHash;
- const connectorZeroStatus = stationInfo?.Connectors[0];
- // Add connector id 0
- if (connectorZeroStatus && this.getUseConnectorId0(stationInfo) === true) {
- ChargingStationUtils.checkStationInfoConnectorStatus(
- 0,
- connectorZeroStatus,
- this.logPrefix(),
- this.templateFile
- );
- this.connectors.set(0, Utils.cloneObject<ConnectorStatus>(connectorZeroStatus));
- this.getConnectorStatus(0).availability = AvailabilityType.Operative;
- if (Utils.isUndefined(this.getConnectorStatus(0)?.chargingProfiles)) {
- this.getConnectorStatus(0).chargingProfiles = [];
- }
- }
- // Add remaining connectors
const templateMaxConnectors = ChargingStationUtils.getMaxNumberOfConnectors(
stationInfo.Connectors
);
this.templateFile,
this.logPrefix()
);
+ const templateMaxAvailableConnectors = stationInfo?.Connectors[0]
+ ? templateMaxConnectors - 1
+ : templateMaxConnectors;
if (
- configuredMaxConnectors >
- (stationInfo?.Connectors[0] ? templateMaxConnectors - 1 : templateMaxConnectors) &&
+ configuredMaxConnectors > templateMaxAvailableConnectors &&
!stationInfo?.randomConnectors
) {
logger.warn(
);
stationInfo.randomConnectors = true;
}
- const templateMaxAvailableConnectors = stationInfo?.Connectors[0]
- ? templateMaxConnectors - 1
- : templateMaxConnectors;
- if (templateMaxAvailableConnectors > 0) {
- for (let connectorId = 1; connectorId <= configuredMaxConnectors; connectorId++) {
- const templateConnectorId = stationInfo?.randomConnectors
- ? Utils.getRandomInteger(templateMaxAvailableConnectors, 1)
- : connectorId;
+ if (templateMaxConnectors > 0) {
+ for (let connectorId = 0; connectorId <= configuredMaxConnectors; connectorId++) {
+ if (
+ connectorId === 0 &&
+ (!stationInfo?.Connectors[connectorId] ||
+ this.getUseConnectorId0(stationInfo) === false)
+ ) {
+ continue;
+ }
+ const templateConnectorId =
+ connectorId > 0 && stationInfo?.randomConnectors
+ ? Utils.getRandomInteger(templateMaxAvailableConnectors, 1)
+ : connectorId;
const connectorStatus = stationInfo?.Connectors[templateConnectorId];
ChargingStationUtils.checkStationInfoConnectorStatus(
templateConnectorId,
// Start heartbeat
this.startHeartbeat();
// Initialize connectors status
- for (const connectorId of this.connectors.keys()) {
- let connectorStatus: ConnectorStatusEnum | undefined;
- if (connectorId === 0) {
- continue;
- } else if (
- !this.getConnectorStatus(connectorId)?.status &&
- (this.isChargingStationAvailable() === false ||
- this.isConnectorAvailable(connectorId) === false)
- ) {
- connectorStatus = ConnectorStatusEnum.Unavailable;
- } else if (
- !this.getConnectorStatus(connectorId)?.status &&
- this.getConnectorStatus(connectorId)?.bootStatus
- ) {
- // Set boot status in template at startup
- connectorStatus = this.getConnectorStatus(connectorId)?.bootStatus;
- } else if (this.getConnectorStatus(connectorId)?.status) {
- // Set previous status at startup
- connectorStatus = this.getConnectorStatus(connectorId)?.status;
- } else {
- // Set default status
- connectorStatus = ConnectorStatusEnum.Available;
+ if (this.hasEvses) {
+ for (const [evseId, evseStatus] of this.evses) {
+ if (evseId === 0) {
+ continue;
+ }
+ for (const [connectorId, connectorStatus] of evseStatus.connectors) {
+ const connectorBootStatus = ChargingStationUtils.getBootConnectorStatus(
+ this,
+ connectorId,
+ connectorStatus
+ );
+ await OCPPServiceUtils.sendAndSetConnectorStatus(this, connectorId, connectorBootStatus);
+ }
+ }
+ } else {
+ for (const connectorId of this.connectors.keys()) {
+ if (connectorId === 0) {
+ continue;
+ }
+ const connectorBootStatus = ChargingStationUtils.getBootConnectorStatus(
+ this,
+ connectorId,
+ this.getConnectorStatus(connectorId)
+ );
+ await OCPPServiceUtils.sendAndSetConnectorStatus(this, connectorId, connectorBootStatus);
}
- await OCPPServiceUtils.sendAndSetConnectorStatus(this, connectorId, connectorStatus);
}
if (this.stationInfo?.firmwareStatus === FirmwareStatus.Installing) {
await this.ocppRequestService.requestHandler<