Browse Source

potential fix #393 corrupted MQTT total values

pull/421/head
lumapu 2 years ago
parent
commit
1620b633d8
  1. 44
      tools/esp8266/app.cpp
  2. 2
      tools/esp8266/defines.h

44
tools/esp8266/app.cpp

@ -579,7 +579,6 @@ void app::sendMqtt(void) {
char topic[32 + MAX_NAME_LENGTH], val[32];
float total[4];
bool sendTotal = false;
memset(total, 0, sizeof(float) * 4);
snprintf(val, 32, "%ld", millis() / 1000);
mMqtt.sendMsg("uptime", val);
@ -588,6 +587,7 @@ void app::sendMqtt(void) {
return;
while(!mMqttSendList.empty()) {
memset(total, 0, sizeof(float) * 4);
for (uint8_t id = 0; id < mSys->getNumInverters(); id++) {
Inverter<> *iv = mSys->getInverterByPos(id);
if (NULL == iv)
@ -653,29 +653,29 @@ void app::sendMqtt(void) {
}
mMqttSendList.pop(); // remove from list once all inverters were processed
}
if (true == sendTotal) {
uint8_t fieldId;
for (uint8_t i = 0; i < 4; i++) {
switch (i) {
default:
case 0:
fieldId = FLD_PAC;
break;
case 1:
fieldId = FLD_YT;
break;
case 2:
fieldId = FLD_YD;
break;
case 3:
fieldId = FLD_PDC;
break;
if (true == sendTotal) {
uint8_t fieldId;
for (uint8_t i = 0; i < 4; i++) {
switch (i) {
default:
case 0:
fieldId = FLD_PAC;
break;
case 1:
fieldId = FLD_YT;
break;
case 2:
fieldId = FLD_YD;
break;
case 3:
fieldId = FLD_PDC;
break;
}
snprintf(topic, 32 + MAX_NAME_LENGTH, "total/%s", fields[fieldId]);
snprintf(val, 10, "%.3f", total[i]);
mMqtt.sendMsg(topic, val);
}
snprintf(topic, 32 + MAX_NAME_LENGTH, "total/%s", fields[fieldId]);
snprintf(val, 10, "%.3f", total[i]);
mMqtt.sendMsg(topic, val);
}
}
}

2
tools/esp8266/defines.h

@ -13,7 +13,7 @@
//-------------------------------------
#define VERSION_MAJOR 0
#define VERSION_MINOR 5
#define VERSION_PATCH 31
#define VERSION_PATCH 32
//-------------------------------------
typedef struct {

Loading…
Cancel
Save