From 7c51a3eb7ae24f213c0794e4ddbc320c3f6a5623 Mon Sep 17 00:00:00 2001 From: rschoene <rene.schoene@tu-dresden.de> Date: Mon, 15 Apr 2019 17:55:29 +0200 Subject: [PATCH] Small fix to not update non-changed state when receiving MQTT message. --- .../inf/st/eraser/openhab2/mqtt/MQTTUpdater.java | 9 ++++++--- .../de/tudresden/inf/st/eraser/util/MqttReceiver.java | 3 +-- 2 files changed, 7 insertions(+), 5 deletions(-) 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 eb7d9b44..829726ef 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 @@ -57,9 +57,12 @@ public class MQTTUpdater implements AutoCloseable { } private void itemUpdate(Item item, String state) { - this.logger.debug("Update state of {} [{}] from '{}' to '{}'.", - item.getLabel(), item.getID(), item.getStateAsString(), state); - item.setStateFromString(state, false); + String oldState = item.getStateAsString(); + if (oldState == null || !oldState.equals(state)) { + this.logger.debug("Update state of {} [{}] from '{}' to '{}'.", + item.getLabel(), item.getID(), oldState, state); + item.setStateFromString(state, false); + } } /** 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 34210900..1f013ea2 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 @@ -1,6 +1,5 @@ package de.tudresden.inf.st.eraser.util; -import de.tudresden.inf.st.eraser.openhab2.mqtt.MQTTUpdater; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.fusesource.hawtbuf.Buffer; @@ -40,7 +39,7 @@ public class MqttReceiver implements AutoCloseable { private QoS qos; public MqttReceiver() { - this.logger = LogManager.getLogger(MQTTUpdater.class); + this.logger = LogManager.getLogger(MqttReceiver.class); this.readyLock = new ReentrantLock(); this.readyCondition = readyLock.newCondition(); this.ready = false; -- GitLab