diff --git a/src/CHANGES.md b/src/CHANGES.md index 9dc10a72..ab0963d7 100644 --- a/src/CHANGES.md +++ b/src/CHANGES.md @@ -1,8 +1,11 @@ # Development Changes +## 0.8.45 - 2024-01-05 +* fix MqTT total values #1326 + ## 0.8.44 - 2024-01-05 * fix MqTT transmission of data #1326 -* live data is read much earlier / faster and more often +* live data is read much earlier / faster and more often #1272 ## 0.8.43 - 2024-01-04 * fix display of sunrise in `/system` #1308 diff --git a/src/defines.h b/src/defines.h index f0c9731a..4d3d7fdd 100644 --- a/src/defines.h +++ b/src/defines.h @@ -13,7 +13,7 @@ //------------------------------------- #define VERSION_MAJOR 0 #define VERSION_MINOR 8 -#define VERSION_PATCH 44 +#define VERSION_PATCH 45 //------------------------------------- typedef struct { diff --git a/src/publisher/pubMqttIvData.h b/src/publisher/pubMqttIvData.h index 61344ede..a7deadfb 100644 --- a/src/publisher/pubMqttIvData.h +++ b/src/publisher/pubMqttIvData.h @@ -133,55 +133,56 @@ class PubMqttIvData { return; } - if (MqttSentStatus::LAST_SUCCESS_SENT == rec->mqttSentStatus) { - if(mPos < rec->length) { - bool retained = false; - if (mCmd == RealTimeRunData_Debug) { - if((FLD_YT == rec->assign[mPos].fieldId) || (FLD_YD == rec->assign[mPos].fieldId)) - retained = true; - - // calculate total values for RealTimeRunData_Debug - if (CH0 == rec->assign[mPos].ch) { - if(mIv->getStatus() > InverterStatus::STARTING) { - if(mIv->config->add2Total) { - mTotalFound = true; - switch (rec->assign[mPos].fieldId) { - case FLD_PAC: - mTotal[0] += mIv->getValue(mPos, rec); - break; - case FLD_YT: - mTotal[1] += mIv->getValue(mPos, rec); - break; - case FLD_YD: { - float val = mIv->getValue(mPos, rec); - if(0 == val) // inverter restarted during day - mSendTotalYd = false; - else - mTotal[2] += val; - break; - } - case FLD_PDC: - mTotal[3] += mIv->getValue(mPos, rec); - break; + if(mPos < rec->length) { + bool retained = false; + if (mCmd == RealTimeRunData_Debug) { + if((FLD_YT == rec->assign[mPos].fieldId) || (FLD_YD == rec->assign[mPos].fieldId)) + retained = true; + + // calculate total values for RealTimeRunData_Debug + if (CH0 == rec->assign[mPos].ch) { + if(mIv->getStatus() > InverterStatus::STARTING) { + if(mIv->config->add2Total) { + mTotalFound = true; + switch (rec->assign[mPos].fieldId) { + case FLD_PAC: + mTotal[0] += mIv->getValue(mPos, rec); + break; + case FLD_YT: + mTotal[1] += mIv->getValue(mPos, rec); + break; + case FLD_YD: { + float val = mIv->getValue(mPos, rec); + if(0 == val) // inverter restarted during day + mSendTotalYd = false; + else + mTotal[2] += val; + break; } + case FLD_PDC: + mTotal[3] += mIv->getValue(mPos, rec); + break; } - } else - mAllTotalFound = false; - } + } + } else + mAllTotalFound = false; } + } + if (MqttSentStatus::LAST_SUCCESS_SENT == rec->mqttSentStatus) { uint8_t qos = (FLD_ACT_ACTIVE_PWR_LIMIT == rec->assign[mPos].fieldId) ? QOS_2 : QOS_0; snprintf(mSubTopic, 32 + MAX_NAME_LENGTH, "%s/ch%d/%s", mIv->config->name, rec->assign[mPos].ch, fields[rec->assign[mPos].fieldId]); snprintf(mVal, 40, "%g", ah::round3(mIv->getValue(mPos, rec))); mPublish(mSubTopic, mVal, retained, qos); - mPos++; - } else { + } + mPos++; + } else { + if (MqttSentStatus::LAST_SUCCESS_SENT == rec->mqttSentStatus) { sendRadioStat(rec->length); rec->mqttSentStatus = MqttSentStatus::DATA_SENT; - mState = FIND_NXT_IV; } - } else mState = FIND_NXT_IV; + } } inline void sendRadioStat(uint8_t start) {