From ce1de81e42e5501b995584b69adf94008ec2dda8 Mon Sep 17 00:00:00 2001 From: geronet1 Date: Sat, 18 May 2024 21:51:37 +0200 Subject: [PATCH] don't publish zero channels over mqtt --- src/publisher/pubMqttIvData.h | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/publisher/pubMqttIvData.h b/src/publisher/pubMqttIvData.h index 7412ce15..be6ac2c0 100644 --- a/src/publisher/pubMqttIvData.h +++ b/src/publisher/pubMqttIvData.h @@ -215,9 +215,13 @@ class PubMqttIvData { if (mJson && RealTimeRunData_Debug == mCmd) { DynamicJsonDocument doc(300); std::array buf; + bool zero = true; for (mPos = 0; mPos < rec->length; mPos++) { - doc[fields[rec->assign[mPos].fieldId]] = ah::round3(mIv->getValue(mPos, rec)); + double value = ah::round3(mIv->getValue(mPos, rec)); + if (value != 0) + zero = false; + doc[fields[rec->assign[mPos].fieldId]] = value; bool publish = false; if (mPos != rec->length - 1) { // not last one @@ -228,11 +232,15 @@ class PubMqttIvData { if (publish) { publish = false; - // if next channel or end->publish - serializeJson(doc, buf.data(), buf.size()); + // if next channel or end->publish but not if values are all zero + if (!zero) + { + serializeJson(doc, buf.data(), buf.size()); + snprintf(mSubTopic.data(), mSubTopic.size(), "%s/ch%d", mIv->config->name, rec->assign[mPos].ch); + mPublish(mSubTopic.data(), buf.data(), false, QOS_0); + } + zero = true; doc.clear(); - snprintf(mSubTopic.data(), mSubTopic.size(), "%s/ch%d", mIv->config->name, rec->assign[mPos].ch); - mPublish(mSubTopic.data(), buf.data(), false, QOS_0); } } }