diff --git a/src/CHANGES.md b/src/CHANGES.md index 34f9aacc..9313dbee 100644 --- a/src/CHANGES.md +++ b/src/CHANGES.md @@ -1,5 +1,8 @@ # Development Changes +## 0.8.46 - 2024-01-06 +* improved communication + ## 0.8.45 - 2024-01-05 * fix MqTT total values #1326 * start implementing a wizard for initial (WiFi) configuration #1199 diff --git a/src/defines.h b/src/defines.h index 4d3d7fdd..fcd3bbf7 100644 --- a/src/defines.h +++ b/src/defines.h @@ -13,7 +13,7 @@ //------------------------------------- #define VERSION_MAJOR 0 #define VERSION_MINOR 8 -#define VERSION_PATCH 45 +#define VERSION_PATCH 46 //------------------------------------- typedef struct { diff --git a/src/hm/Communication.h b/src/hm/Communication.h index 219cb92e..f69d19c7 100644 --- a/src/hm/Communication.h +++ b/src/hm/Communication.h @@ -118,7 +118,7 @@ class Communication : public CommQueue<> { mIsRetransmit = false; setAttempt(); if((q->cmd == AlarmData) || (q->cmd == GridOnProFilePara)) - incrAttempt(q->cmd == AlarmData? 5 : 3); + incrAttempt(15); mState = States::WAIT; break; diff --git a/src/hm/hmInverter.h b/src/hm/hmInverter.h index a5834d9a..4e714cfd 100644 --- a/src/hm/hmInverter.h +++ b/src/hm/hmInverter.h @@ -191,19 +191,18 @@ class Inverter { if(mNextLive) cb(RealTimeRunData_Debug, false); // get live data else { - mNextLive = true; if(actPowerLimit == 0xffff) cb(SystemConfigPara, false); // power limit info else if(InitDataState != devControlCmd) { cb(devControlCmd, false); // custom command which was received by API devControlCmd = InitDataState; mGetLossInterval = 1; - } else if((alarmLastId != alarmMesIndex) && (alarmMesIndex != 0)) - cb(AlarmData, false); // get last alarms - else if(0 == getFwVersion()) + } else if(0 == getFwVersion()) cb(InverterDevInform_All, false); // get firmware version else if(0 == getHwVersion()) cb(InverterDevInform_Simple, false); // get hardware version + else if((alarmLastId != alarmMesIndex) && (alarmMesIndex != 0)) + cb(AlarmData, false); // get last alarms else if((0 == mGridLen) && generalConfig->readGrid) { // read grid profile cb(GridOnProFilePara, false); } else if (mGetLossInterval > AHOY_GET_LOSS_INTERVAL) { // get loss rate @@ -339,28 +338,27 @@ class Inverter { } } } - else if (rec->assign == InfoAssignment) { - DPRINTLN(DBG_DEBUG, "add info"); - // eg. fw version ... - isConnected = true; - } - else if (rec->assign == SimpleInfoAssignment) { - DPRINTLN(DBG_DEBUG, "add simple info"); - // eg. hw version ... - } - else if (rec->assign == SystemConfigParaAssignment) { - DPRINTLN(DBG_DEBUG, "add config"); - if (getPosByChFld(0, FLD_ACT_ACTIVE_PWR_LIMIT, rec) == pos){ - actPowerLimit = rec->record[pos]; - DPRINT(DBG_DEBUG, F("Inverter actual power limit: ")); - DPRINTLN(DBG_DEBUG, String(actPowerLimit, 1)); - } - } - else if (rec->assign == AlarmDataAssignment) { - DPRINTLN(DBG_DEBUG, "add alarm"); + else { + mNextLive = true; + if (rec->assign == InfoAssignment) { + DPRINTLN(DBG_DEBUG, "add info"); + // eg. fw version ... + isConnected = true; + } else if (rec->assign == SimpleInfoAssignment) { + DPRINTLN(DBG_DEBUG, "add simple info"); + // eg. hw version ... + } else if (rec->assign == SystemConfigParaAssignment) { + DPRINTLN(DBG_DEBUG, "add config"); + if (getPosByChFld(0, FLD_ACT_ACTIVE_PWR_LIMIT, rec) == pos){ + actPowerLimit = rec->record[pos]; + DPRINT(DBG_DEBUG, F("Inverter actual power limit: ")); + DPRINTLN(DBG_DEBUG, String(actPowerLimit, 1)); + } + } else if (rec->assign == AlarmDataAssignment) { + DPRINTLN(DBG_DEBUG, "add alarm"); + } else + DPRINTLN(DBG_WARN, F("add with unknown assignment")); } - else - DPRINTLN(DBG_WARN, F("add with unknown assignment")); } else DPRINTLN(DBG_ERROR, F("addValue: assignment not found with cmd 0x")); diff --git a/src/plugins/Display/Display_data.h b/src/plugins/Display/Display_data.h index a400377d..a7a7ecee 100644 --- a/src/plugins/Display/Display_data.h +++ b/src/plugins/Display/Display_data.h @@ -4,19 +4,19 @@ #define __DISPLAY_DATA__ struct DisplayData { - const char *version=nullptr; - float totalPower=0.0f; // indicate current power (W) - float totalYieldDay=0.0f; // indicate day yield (Wh) - float totalYieldTotal=0.0f; // indicate total yield (kWh) - uint32_t utcTs=0; // indicate absolute timestamp (utc unix time). 0 = time is not synchonized - uint8_t nrProducing=0; // indicate number of producing inverters - uint8_t nrSleeping=0; // indicate number of sleeping inverters - bool WifiSymbol = false; // indicate if WiFi is connected - bool RadioSymbol = false; // indicate if radio module is connecting and working - bool MQTTSymbol = false; // indicate if MQTT is connected - int8_t WifiRSSI=SCHAR_MIN; // indicate RSSI value for WiFi - int8_t RadioRSSI=SCHAR_MIN; // indicate RSSI value for radio - IPAddress ipAddress; // indicate ip adress of ahoy + const char *version=nullptr; + float totalPower=0.0f; // indicate current power (W) + float totalYieldDay=0.0f; // indicate day yield (Wh) + float totalYieldTotal=0.0f; // indicate total yield (kWh) + uint32_t utcTs=0; // indicate absolute timestamp (utc unix time). 0 = time is not synchonized + uint8_t nrProducing=0; // indicate number of producing inverters + uint8_t nrSleeping=0; // indicate number of sleeping inverters + bool WifiSymbol = false; // indicate if WiFi is connected + bool RadioSymbol = false; // indicate if radio module is connecting and working + bool MQTTSymbol = false; // indicate if MQTT is connected + int8_t WifiRSSI=SCHAR_MIN; // indicate RSSI value for WiFi + int8_t RadioRSSI=SCHAR_MIN; // indicate RSSI value for radio + IPAddress ipAddress; // indicate ip adress of ahoy }; #endif /*__DISPLAY_DATA__*/