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