Compare commits

...

1 Commits

  1. 2
      src/main/java/com/yablochkov/ocppstub/BootService.java
  2. 43
      src/main/java/com/yablochkov/ocppstub/ConfigService.java
  3. 9
      src/main/java/com/yablochkov/ocppstub/EventHandler.java

@ -15,7 +15,7 @@ import java.util.UUID;
@RequiredArgsConstructor @RequiredArgsConstructor
public class BootService { public class BootService {
private final static int PASSWD = 1; private final static int PASSWD = 1;
private final static int INTERVAL_SEC = 10; public final static int INTERVAL_SEC = 10;
private final SessionService sessionService; private final SessionService sessionService;
private final TriggerService triggerService; private final TriggerService triggerService;

@ -2,6 +2,7 @@ package com.yablochkov.ocppstub;
import eu.chargetime.ocpp.feature.profile.ServerCoreProfile; import eu.chargetime.ocpp.feature.profile.ServerCoreProfile;
import eu.chargetime.ocpp.model.core.*; import eu.chargetime.ocpp.model.core.*;
import java.util.concurrent.CompletionStage;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
@ -18,32 +19,36 @@ public class ConfigService {
@Lazy @Lazy
@Autowired private ServerCoreProfile coreProfile; @Autowired private ServerCoreProfile coreProfile;
public void sengConfig(UUID sessionIndex) { public boolean sengConfig(UUID sessionIndex) {
log.info("Sending configuration"); log.info("Sending configuration");
ChangeConfigurationRequest configurationRequest = coreProfile ChangeConfigurationRequest configurationRequest = coreProfile
.createChangeConfigurationRequest("AuthorizationKey", DEFAULT_KEY); .createChangeConfigurationRequest("AuthorizationKey", DEFAULT_KEY);
try { try {
server.send(sessionIndex, configurationRequest) var feature = server.send(sessionIndex,
.thenApply(confirmation -> { configurationRequest)
log.debug("Get confirmation"); .thenApply(confirmation -> {
if (confirmation instanceof ChangeConfigurationConfirmation) { log.debug("Get confirmation");
log.debug("Confirmation type is ChangeConfigurationConfirmation"); if (confirmation instanceof ChangeConfigurationConfirmation) {
ConfigurationStatus status = ((ChangeConfigurationConfirmation) confirmation).getStatus(); log.debug("Confirmation type is ChangeConfigurationConfirmation");
if (status == ConfigurationStatus.Accepted) { ConfigurationStatus status = ((ChangeConfigurationConfirmation) confirmation).getStatus();
log.debug("Confirmation status is accepted"); if (status == ConfigurationStatus.Accepted) {
return Void.TYPE; log.debug("Confirmation status is accepted");
} return true;
} }
log.error("Charge point don't confirm password change"); }
throw new RuntimeException("CP don't confirm pass change"); log.error("Charge point don't confirm password change");
}) throw new RuntimeException("CP don't confirm pass change");
.thenRunAsync(() -> { })
log.info("Closing session {}", sessionIndex); .thenApply((state) -> {
server.closeSession(sessionIndex); log.info("Closing session {}", sessionIndex);
}); server.closeSession(sessionIndex);
return state;
});
return feature.toCompletableFuture().get();
} catch (Exception e) { } catch (Exception e) {
log.error("Exception on ChangeConfiguration", e); log.error("Exception on ChangeConfiguration", e);
} }
return false;
} }
} }

@ -1,9 +1,12 @@
package com.yablochkov.ocppstub; package com.yablochkov.ocppstub;
import static com.yablochkov.ocppstub.BootService.INTERVAL_SEC;
import eu.chargetime.ocpp.ServerEvents; import eu.chargetime.ocpp.ServerEvents;
import eu.chargetime.ocpp.feature.profile.ServerCoreEventHandler; import eu.chargetime.ocpp.feature.profile.ServerCoreEventHandler;
import eu.chargetime.ocpp.model.SessionInformation; import eu.chargetime.ocpp.model.SessionInformation;
import eu.chargetime.ocpp.model.core.*; import eu.chargetime.ocpp.model.core.*;
import java.time.ZonedDateTime;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -32,7 +35,11 @@ public class EventHandler implements ServerCoreEventHandler, ServerEvents {
public BootNotificationConfirmation handleBootNotificationRequest(UUID sessionIndex, BootNotificationRequest request) { public BootNotificationConfirmation handleBootNotificationRequest(UUID sessionIndex, BootNotificationRequest request) {
BootNotificationConfirmation response = bootService.handle(sessionIndex, request); BootNotificationConfirmation response = bootService.handle(sessionIndex, request);
if (response.getStatus() == RegistrationStatus.Pending) { if (response.getStatus() == RegistrationStatus.Pending) {
configService.sengConfig(sessionIndex); boolean isConfigSet = configService.sengConfig(sessionIndex);
if (!isConfigSet) {
log.error("Config not set, skip this step");
return new BootNotificationConfirmation(ZonedDateTime.now(), INTERVAL_SEC, RegistrationStatus.Accepted);
}
} }
return response; return response;
} }

Loading…
Cancel
Save