Browse Source

0.8.45

* fix MqTT total values #1326
pull/1328/head
lumapu 1 year ago
parent
commit
617cf0a92a
  1. 5
      src/CHANGES.md
  2. 2
      src/defines.h
  3. 75
      src/publisher/pubMqttIvData.h

5
src/CHANGES.md

@ -1,8 +1,11 @@
# Development Changes # Development Changes
## 0.8.45 - 2024-01-05
* fix MqTT total values #1326
## 0.8.44 - 2024-01-05 ## 0.8.44 - 2024-01-05
* fix MqTT transmission of data #1326 * 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 ## 0.8.43 - 2024-01-04
* fix display of sunrise in `/system` #1308 * fix display of sunrise in `/system` #1308

2
src/defines.h

@ -13,7 +13,7 @@
//------------------------------------- //-------------------------------------
#define VERSION_MAJOR 0 #define VERSION_MAJOR 0
#define VERSION_MINOR 8 #define VERSION_MINOR 8
#define VERSION_PATCH 44 #define VERSION_PATCH 45
//------------------------------------- //-------------------------------------
typedef struct { typedef struct {

75
src/publisher/pubMqttIvData.h

@ -133,55 +133,56 @@ class PubMqttIvData {
return; return;
} }
if (MqttSentStatus::LAST_SUCCESS_SENT == rec->mqttSentStatus) { if(mPos < rec->length) {
if(mPos < rec->length) { bool retained = false;
bool retained = false; if (mCmd == RealTimeRunData_Debug) {
if (mCmd == RealTimeRunData_Debug) { if((FLD_YT == rec->assign[mPos].fieldId) || (FLD_YD == rec->assign[mPos].fieldId))
if((FLD_YT == rec->assign[mPos].fieldId) || (FLD_YD == rec->assign[mPos].fieldId)) retained = true;
retained = true;
// calculate total values for RealTimeRunData_Debug
// calculate total values for RealTimeRunData_Debug if (CH0 == rec->assign[mPos].ch) {
if (CH0 == rec->assign[mPos].ch) { if(mIv->getStatus() > InverterStatus::STARTING) {
if(mIv->getStatus() > InverterStatus::STARTING) { if(mIv->config->add2Total) {
if(mIv->config->add2Total) { mTotalFound = true;
mTotalFound = true; switch (rec->assign[mPos].fieldId) {
switch (rec->assign[mPos].fieldId) { case FLD_PAC:
case FLD_PAC: mTotal[0] += mIv->getValue(mPos, rec);
mTotal[0] += mIv->getValue(mPos, rec); break;
break; case FLD_YT:
case FLD_YT: mTotal[1] += mIv->getValue(mPos, rec);
mTotal[1] += mIv->getValue(mPos, rec); break;
break; case FLD_YD: {
case FLD_YD: { float val = mIv->getValue(mPos, rec);
float val = mIv->getValue(mPos, rec); if(0 == val) // inverter restarted during day
if(0 == val) // inverter restarted during day mSendTotalYd = false;
mSendTotalYd = false; else
else mTotal[2] += val;
mTotal[2] += val; break;
break;
}
case FLD_PDC:
mTotal[3] += mIv->getValue(mPos, rec);
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; 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(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))); snprintf(mVal, 40, "%g", ah::round3(mIv->getValue(mPos, rec)));
mPublish(mSubTopic, mVal, retained, qos); mPublish(mSubTopic, mVal, retained, qos);
mPos++; }
} else { mPos++;
} else {
if (MqttSentStatus::LAST_SUCCESS_SENT == rec->mqttSentStatus) {
sendRadioStat(rec->length); sendRadioStat(rec->length);
rec->mqttSentStatus = MqttSentStatus::DATA_SENT; rec->mqttSentStatus = MqttSentStatus::DATA_SENT;
mState = FIND_NXT_IV;
} }
} else
mState = FIND_NXT_IV; mState = FIND_NXT_IV;
}
} }
inline void sendRadioStat(uint8_t start) { inline void sendRadioStat(uint8_t start) {

Loading…
Cancel
Save