in streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/adapters/simulator/machine/MachineDataSimulator.java [51:118]
public void run() {
this.running = true;
long startTimeMs = System.currentTimeMillis();
while (running) {
Map<String, Object> event = new HashMap<>();
long currentTimeMs = System.currentTimeMillis();
long timeDeltaMs = currentTimeMs - startTimeMs;
switch (this.selectedSimulatorOption) {
case "flowrate":
// 0 - 30s
if (timeDeltaMs > 0 && timeDeltaMs <= 30000) {
event = buildFlowrateEvent(0);
} else if (timeDeltaMs > 30000 && timeDeltaMs <= 60000) {
// 30s - 60s
event = buildFlowrateEvent(1);
} else {
// > 60s
// reset start time to start over again
startTimeMs = currentTimeMs;
}
break;
case "pressure":
// 0 - 30s
if (timeDeltaMs > 0 && timeDeltaMs <= 30000) {
event = buildPressureEvent(0);
} else if (timeDeltaMs > 30000 && timeDeltaMs <= 60000) {
// 30s - 60s
event = buildPressureEvent(1);
} else {
// > 60s
// reset start time to start over again
startTimeMs = currentTimeMs;
}
break;
case "waterlevel":
if (timeDeltaMs > 0 && timeDeltaMs <= 30000) {
// 0 - 30s
event = buildWaterlevelEvent(0);
} else if (timeDeltaMs > 30000 && timeDeltaMs <= 60000) {
// 30s - 60s
event = buildWaterlevelEvent(1);
} else {
// > 60s
// reset start time to start over again
startTimeMs = currentTimeMs;
}
break;
default:
try {
throw new AdapterException("resource not found");
} catch (AdapterException e) {
throw new RuntimeException(e);
}
}
if (!event.keySet().isEmpty()) {
collector.collect(event);
}
try {
TimeUnit.MILLISECONDS.sleep(waitTimeMs);
} catch (InterruptedException e) {
LOG.error("Machine simulator thread interrupted", e);
}
}
}