diff --git a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/util/MqttReceiver.java b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/util/MqttReceiver.java index 5fa9ad6800b3964369d0a1f140db6a4c3e0d164f..75bbfe3c434e95adfe3474c3ad571db46403748a 100644 --- a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/util/MqttReceiver.java +++ b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/util/MqttReceiver.java @@ -103,8 +103,7 @@ public class MqttReceiver implements AutoCloseable { mqtt.setHost(this.host); connection = mqtt.callbackConnection(); AtomicReference<Throwable> error = new AtomicReference<>(); - connection.listener(new Listener() { - @Override + connection.listener(new ExtendedListener() { public void onConnected() { logger.debug("Connected"); } @@ -115,12 +114,17 @@ public class MqttReceiver implements AutoCloseable { } @Override - public void onPublish(UTF8Buffer topicBuffer, Buffer body, Runnable ack) { - String topicString = topicBuffer.toString(); + public void onPublish(UTF8Buffer topic, Buffer body, Callback<Callback<Void>> ack) { + String topicString = topic.toString(); String message = body.ascii().toString(); // logger.debug("{}: {}", topicString, message); onMessageCallback.accept(topicString, message); - ack.run(); // always acknowledge message + ack.onSuccess(null); // always acknowledge message + } + + @Override + public void onPublish(UTF8Buffer topicBuffer, Buffer body, Runnable ack) { + logger.warn("onPublish should not be called"); } @Override diff --git a/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/EraserStarter.java b/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/EraserStarter.java index cdf3e9d03c99e48df645c8df8dfcbd6eac754a8d..3f990bc454289c519c7f41f1851a9f00a423c9eb 100644 --- a/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/EraserStarter.java +++ b/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/EraserStarter.java @@ -1,6 +1,7 @@ package de.tudresden.inf.st.eraser.starter; import beaver.Parser; +import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import de.tudresden.inf.st.eraser.feedbackloop.analyze.AnalyzeImpl; @@ -68,6 +69,7 @@ public class EraserStarter { System.exit(1); } ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); + mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); File settingsFile = new File(commandLineOptions.configFile); Setting settings; try { @@ -127,52 +129,6 @@ public class EraserStarter { machineLearningModel.setEncoder(handler); machineLearningModel.setDecoder(handler); root.getMachineLearningRoot().setActivityRecognition(machineLearningModel); - /** - //Begin the Integration - Item item1=model.resolveItem("m_accel_x").get(); - Item item2=model.resolveItem("m_accel_y").get(); - Item item3=model.resolveItem("m_accel_z").get(); - Item item4=model.resolveItem("m_rotation_x").get(); - Item item5=model.resolveItem("m_rotation_y").get(); - Item item6=model.resolveItem("m_rotation_z").get(); - Item item7=model.resolveItem("w_accel_x").get(); - Item item8=model.resolveItem("w_accel_y").get(); - Item item9=model.resolveItem("w_accel_z").get(); - Item item10=model.resolveItem("w_rotation_x").get(); - Item item11=model.resolveItem("w_rotation_y").get(); - Item item12=model.resolveItem("w_rotation_z").get(); - //0.2717419,8.698134,4.471172,0.043741,0.515962,0.854318,1.8818425,4.9320555,8.145074,0.2374878,-0.032836914,0.3381958,working - item1.setStateFromString("0.2717419"); - item2.setStateFromString("8.698134"); - item3.setStateFromString("4.471172"); - item4.setStateFromString("0.043741"); - item5.setStateFromString("0.515962"); - item6.setStateFromString("0.854318"); - item7.setStateFromString("1.8818425"); - item8.setStateFromString("4.9320555"); - item9.setStateFromString("8.145074"); - item10.setStateFromString("0.2374878"); - item11.setStateFromString("-0.032836914"); - item12.setStateFromString("0.3381958"); - - ArrayList<Item> newData=new ArrayList<>(); - newData.add(item1); - newData.add(item2); - newData.add(item3); - newData.add(item4); - newData.add(item5); - newData.add(item6); - newData.add(item7); - newData.add(item8); - newData.add(item9); - newData.add(item10); - newData.add(item11); - newData.add(item12); - handler.newData(newData);*/ - List<ItemPreference> preference=handler.classify().getPreferences(); - for(ItemPreference preference1 : preference){ - preference1.apply(); - } } // initialize preference learning @@ -188,23 +144,9 @@ public class EraserStarter { machineLearningModel.setEncoder(handler); machineLearningModel.setDecoder(handler); root.getMachineLearningRoot().setPreferenceLearning(machineLearningModel); - //working,medium,240,70 - /**Item activity_item = model.resolveItem("activity").get(); - String activity=activity_item.getStateAsString(); - activity_item.setStateFromString(activity); - Item brightness_item = model.resolveItem("w_brightness").get(); - brightness_item.setStateFromString("medium"); - ArrayList<Item> newData1 = new ArrayList<>(); - newData1.add(activity_item); - newData1.add(brightness_item); - handler.newData(newData1);*/ - List<ItemPreference> preference=handler.classify().getPreferences(); - for(ItemPreference preference1 : preference){ - preference1.apply(); - } } - machineLearningRoot.getPreferenceLearning().connectItems(settings.preference.items); +// machineLearningRoot.getPreferenceLearning().connectItems(settings.preference.items); if (!machineLearningRoot.getActivityRecognition().check()) { logger.fatal("Invalid activity recognition!"); System.exit(1); diff --git a/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/Setting.java b/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/Setting.java index 09af126b0a66f54aa2b6c88fb04bda9cb7218cb3..642438af01298f801af358dfa7dc5a0eae920326 100644 --- a/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/Setting.java +++ b/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/Setting.java @@ -6,7 +6,6 @@ import org.apache.logging.log4j.Logger; import java.net.MalformedURLException; import java.net.URL; import java.nio.file.Paths; -import java.util.List; /** * Setting bean. @@ -47,10 +46,10 @@ class Setting { public boolean dummy = false; /** Model id. Default: 1.*/ public int id = 1; - /** Items to connect to inputs */ - public List<String> items; - /** Item to change with classification result */ - public String affectedItem; +// /** Items to connect to inputs */ +// public List<String> items; +// /** Item to change with classification result */ +// public String affectedItem; } public class OpenHabContainer { /** The URL from which to import and at which openHAB is running */ diff --git a/eraser.starter/starter-setting.yaml b/eraser.starter/starter-setting.yaml index e8f438cf3eeb22d71d44c675e7328e61ba612562..9bee9fd5220538612272edce35798a6b99629fe2 100644 --- a/eraser.starter/starter-setting.yaml +++ b/eraser.starter/starter-setting.yaml @@ -31,8 +31,8 @@ activity: dummy: false # Model id. Default: 1. id: 1 - # Item to change with classification result - affectedItem: activity +# # Item to change with classification result +# affectedItem: activity # Model for preference learning. If dummy is true, then the file parameter is ignored. preference: @@ -43,12 +43,12 @@ preference: dummy: false # Model id. Default: 1. id: 1 - # Items to connect to inputs - items: - - activity - - w_brightness - # Item to change with classification result - affectedItem: iris1_item +# # Items to connect to inputs +# items: +# - activity +# - w_brightness +# # Item to change with classification result +# affectedItem: iris1_item # Initialize the knowledge base by importing data from openHAB. openhab: