Skip to content

Commit 062d960

Browse files
paraplupluFelix Remmel
and
Felix Remmel
authored
SimulatorApp: fix bug related to creation of Ess.Power component (OpenEMS#2722)
The Ess.Power component is actually never deleted. An attempt to delete it, is ignored. I was not able to find out the reason for that. Since the component is created afterwards again, this change ensures, the component is updated with the desired `enablePid` property. Co-authored-by: Felix Remmel <[email protected]>
1 parent ebcf244 commit 062d960

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

io.openems.edge.simulator/src/io/openems/edge/simulator/app/SimulatorAppImpl.java

+22-5
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import java.time.ZonedDateTime;
88
import java.time.temporal.ChronoUnit;
99
import java.util.ArrayList;
10-
import java.util.Arrays;
1110
import java.util.Dictionary;
1211
import java.util.HashSet;
1312
import java.util.Hashtable;
@@ -43,7 +42,6 @@
4342
import io.openems.common.exceptions.OpenemsException;
4443
import io.openems.common.jsonrpc.request.CreateComponentConfigRequest;
4544
import io.openems.common.jsonrpc.request.DeleteComponentConfigRequest;
46-
import io.openems.common.jsonrpc.request.UpdateComponentConfigRequest.Property;
4745
import io.openems.common.session.Role;
4846
import io.openems.common.test.TimeLeapClock;
4947
import io.openems.common.timedata.Resolution;
@@ -182,8 +180,7 @@ private synchronized CompletableFuture<ExecuteSimulationResponse> handleExecuteS
182180
this.setCycleTime(AbstractWorker.ALWAYS_WAIT_FOR_TRIGGER_NEXT_RUN);
183181

184182
// Create Ess.Power with disabled PID filter
185-
this.componentManager.handleCreateComponentConfigRequest(user,
186-
new CreateComponentConfigRequest("Ess.Power", Arrays.asList(new Property("enablePid", false))));
183+
this.updateEssPower();
187184

188185
// Create Components
189186
Set<String> simulatorComponentIds = new HashSet<>();
@@ -328,7 +325,11 @@ private void deleteAllConfigurations(User user) throws OpenemsNamedException {
328325
}
329326
if (factoryPid.startsWith("Core.") //
330327
|| factoryPid.startsWith("Controller.Api.") //
331-
|| factoryPid.startsWith("Predictor.")) {
328+
|| factoryPid.startsWith("Predictor.") //
329+
// Ess.Power exists by default. We don't delete it, but will overwrite the
330+
// configuration later. Delete request for this component does not work for some
331+
// unknown reason.
332+
|| factoryPid.equals("Ess.Power")) {
332333
continue;
333334
}
334335
switch (factoryPid) {
@@ -401,6 +402,22 @@ private void setCycleTime(int cycleTime) {
401402
}
402403
}
403404

405+
/**
406+
* Sets the Ess.Power to the default settings for a simulation.
407+
*
408+
*/
409+
private void updateEssPower() {
410+
try {
411+
var config = this.cm.getConfiguration("Ess.Power", null);
412+
Dictionary<String, Object> properties = new Hashtable<>();
413+
properties.put("enablePid", false);
414+
config.update(properties);
415+
} catch (IOException e) {
416+
this.logError(this.log,
417+
"Unable to configure Ess.Power enabledPid. " + e.getClass() + ": " + e.getMessage());
418+
}
419+
}
420+
404421
private void waitForComponentsToActivate(Set<String> simulatorComponentIds) throws OpenemsException {
405422
// Wait for Components to appear
406423
for (var i = 0; i < 100; i++) {

0 commit comments

Comments
 (0)