diff --git a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/openhab2/mqtt/MQTTUpdater.java b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/openhab2/mqtt/MQTTUpdater.java index 647114843839aef335b5337cb62e744870d3a0e3..79d19c6d146d8800062da40016f06199aeaf4b51 100644 --- a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/openhab2/mqtt/MQTTUpdater.java +++ b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/openhab2/mqtt/MQTTUpdater.java @@ -40,7 +40,9 @@ public class MQTTUpdater implements AutoCloseable { public void setRoot(Root root) { ExternalHost host = root.getMqttRoot().getHost(); delegatee.setHost(host.getHostName(), host.getPort()); - delegatee.setOnMessage((topicString, message) -> + delegatee.setUsername(root.getMqttRoot().getUser()); + delegatee.setPassword(root.getMqttRoot().getPassword()); + delegatee.setOnMessage((topicString, message)-> root.getMqttRoot().resolveTopic(topicString).ifPresent(topic -> topic.getItems().forEach( item -> itemUpdate(item, message)))); 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 75bbfe3c434e95adfe3474c3ad571db46403748a..4c448c27b2751190048a15e527c4a15b4da6ee6a 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 @@ -28,6 +28,8 @@ public class MqttReceiver implements AutoCloseable { /** The host running the MQTT broker. */ private URI host; + private String username; + private String password; /** The connection to the MQTT broker. */ private CallbackConnection connection; /** Whether we are subscribed to the topics yet */ @@ -54,6 +56,14 @@ public class MqttReceiver implements AutoCloseable { logger.debug("Host is {}", this.host); } + public void setUsername(String username) { + this.username = username; + } + + public void setPassword(String password) { + this.password = password; + } + public void setOnMessage(BiConsumer<String, String> callback) { this.onMessageCallback = callback; } @@ -101,6 +111,8 @@ public class MqttReceiver implements AutoCloseable { Objects.requireNonNull(this.host, "Host need to be set!"); MQTT mqtt = new MQTT(); mqtt.setHost(this.host); + mqtt.setPassword(this.password); + mqtt.setUserName(this.username); connection = mqtt.callbackConnection(); AtomicReference<Throwable> error = new AtomicReference<>(); connection.listener(new ExtendedListener() {