diff --git a/OpenMQTTGateway.ino b/OpenMQTTGateway.ino index dc2c69a..2a45a62 100644 --- a/OpenMQTTGateway.ino +++ b/OpenMQTTGateway.ino @@ -830,22 +830,22 @@ void receivingMQTT(char * topicOri, char * datacallback) { if (strstr(topicOri, subjectMultiGTWKey) != NULL) // storing received value so as to avoid publishing this value if it has been already sent by this or another OpenMQTTGateway { trc(F("Storing signal")); + unsigned long data = 0; #ifdef jsonPublishing - trc(F("Creating Json buffer")); - StaticJsonBuffer jsonBuffer; - JsonObject& jsondata = jsonBuffer.parseObject(datacallback); - unsigned long data = strtoul(jsondata["value"], NULL, 10); // we will not be able to pass values > 4294967295 - storeValue(data); - trc(F("Data from JSON stored")); + trc(F("Creating Json buffer")); + StaticJsonBuffer jsonBuffer; + JsonObject& jsondata = jsonBuffer.parseObject(datacallback); + if (jsondata.success()) data = jsondata["value"]; #endif - #ifdef simplePublishing - unsigned long data = strtoul(datacallback, NULL, 10); // we will not be able to pass values > 4294967295 - storeValue(data); - trc(F("Data stored")); + data = strtoul(datacallback, NULL, 10); // we will not be able to pass values > 4294967295 #endif + if (data != 0) { + storeValue(data); + trc(F("Data from JSON stored")); + } } //YELLOW ON digitalWrite(led_send, LOW);