Added dummy plugin for simulated sensors
This commit is contained in:
parent
c6f90c42af
commit
fc37d158c5
5 changed files with 158 additions and 0 deletions
3
plugins/hal-dummy/build.gradle
Normal file
3
plugins/hal-dummy/build.gradle
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
dependencies {
|
||||
implementation project(':hal-core')
|
||||
}
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
package se.hal.plugin.dummy;
|
||||
|
||||
import se.hal.intf.*;
|
||||
import se.hal.struct.devicedata.TemperatureSensorData;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
|
||||
public class DummyController implements HalSensorController, HalEventController, Runnable {
|
||||
private List registeredDevices = new ArrayList();
|
||||
private ScheduledExecutorService executor;
|
||||
private HalSensorReportListener sensorListener;
|
||||
private HalEventReportListener eventListener;
|
||||
|
||||
|
||||
public DummyController() {}
|
||||
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
executor = Executors.newScheduledThreadPool(1);
|
||||
executor.scheduleAtFixedRate(this, 0, 60, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (registeredDevices != null) {
|
||||
for (Object device : registeredDevices) {
|
||||
if (sensorListener != null && device instanceof DummyTemperatureSensor) {
|
||||
sensorListener.reportReceived(
|
||||
(HalSensorConfig) device,
|
||||
new TemperatureSensorData(
|
||||
(int)(Math.random()*30),
|
||||
System.currentTimeMillis()
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register(HalSensorConfig sensorConfig) {
|
||||
if (sensorConfig instanceof DummyTemperatureSensor) {
|
||||
registeredDevices.add(sensorConfig);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register(HalEventConfig eventConfig) {
|
||||
if (eventConfig instanceof DummySwitchEvent) {
|
||||
registeredDevices.add(eventConfig);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deregister(HalSensorConfig sensorConfig) {
|
||||
registeredDevices.remove(sensorConfig);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deregister(HalEventConfig eventConfig) {
|
||||
registeredDevices.remove(eventConfig);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(HalEventConfig eventConfig, HalEventData eventData) {
|
||||
// Nothing to do as this is a dummy
|
||||
}
|
||||
|
||||
@Override
|
||||
public int size() {
|
||||
return registeredDevices.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setListener(HalSensorReportListener listener) { sensorListener = listener; }
|
||||
|
||||
@Override
|
||||
public void setListener(HalEventReportListener listener) { eventListener = listener; }
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
executor.shutdown();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
package se.hal.plugin.dummy;
|
||||
|
||||
import se.hal.intf.*;
|
||||
import se.hal.struct.devicedata.SwitchEventData;
|
||||
import se.hal.struct.devicedata.TemperatureSensorData;
|
||||
|
||||
public class DummySwitchEvent implements HalEventConfig {
|
||||
|
||||
|
||||
public DummySwitchEvent() { }
|
||||
|
||||
|
||||
@Override
|
||||
public Class<? extends HalEventController> getEventControllerClass() {
|
||||
return DummyController.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends HalEventData> getEventDataClass() {
|
||||
return SwitchEventData.class;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
package se.hal.plugin.dummy;
|
||||
|
||||
import se.hal.intf.HalSensorConfig;
|
||||
import se.hal.intf.HalSensorController;
|
||||
import se.hal.intf.HalSensorData;
|
||||
import se.hal.struct.devicedata.TemperatureSensorData;
|
||||
|
||||
|
||||
public class DummyTemperatureSensor implements HalSensorConfig {
|
||||
|
||||
|
||||
public DummyTemperatureSensor() { }
|
||||
|
||||
|
||||
@Override
|
||||
public long getDataInterval() {
|
||||
return 60*1000; // 1 min
|
||||
}
|
||||
|
||||
@Override
|
||||
public AggregationMethod getAggregationMethod() {
|
||||
return AggregationMethod.AVERAGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends HalSensorController> getSensorControllerClass() {
|
||||
return DummyController.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends HalSensorData> getSensorDataClass() {
|
||||
return TemperatureSensorData.class;
|
||||
}
|
||||
|
||||
}
|
||||
9
plugins/hal-dummy/src/se/hal/plugin/dummy/plugin.json
Normal file
9
plugins/hal-dummy/src/se/hal/plugin/dummy/plugin.json
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"version": 0.1,
|
||||
"name": "Hal-Dummy Devices",
|
||||
"description": "Dummy devices with simulated data, can be used for demo or testing purposes.",
|
||||
"interfaces": [
|
||||
{"se.hal.intf.HalSensorConfig": "se.hal.plugin.dummy.DummyTemperatureSensor"},
|
||||
{"se.hal.intf.HalEventConfig": "se.hal.plugin.dummy.DummySwitchEvent"}
|
||||
]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue