mirror of
https://github.com/lumapu/ahoy.git
synced 2025-05-22 13:26:10 +02:00
0.8.82
* fixed crash once firmware version was read and sent via MqTT #1428 * possible fix: reset yield offset on midnight #1429
This commit is contained in:
parent
bd532805a6
commit
8c132048e6
5 changed files with 27 additions and 24 deletions
|
@ -1,5 +1,9 @@
|
||||||
# Development Changes
|
# Development Changes
|
||||||
|
|
||||||
|
## 0.8.82 - 2024-02-15
|
||||||
|
* fixed crash once firmware version was read and sent via MqTT #1428
|
||||||
|
* possible fix: reset yield offset on midnight #1429
|
||||||
|
|
||||||
## 0.8.81 - 2024-02-13
|
## 0.8.81 - 2024-02-13
|
||||||
* fixed authentication with empty token #1415
|
* fixed authentication with empty token #1415
|
||||||
* added new setting for future function to send log via MqTT
|
* added new setting for future function to send log via MqTT
|
||||||
|
|
|
@ -466,8 +466,6 @@ void app:: zeroIvValues(bool checkAvail, bool skipYieldDay) {
|
||||||
continue; // skip to next inverter
|
continue; // skip to next inverter
|
||||||
if (!iv->config->enabled)
|
if (!iv->config->enabled)
|
||||||
continue; // skip to next inverter
|
continue; // skip to next inverter
|
||||||
if (iv->commEnabled)
|
|
||||||
continue; // skip to next inverter
|
|
||||||
|
|
||||||
if (checkAvail) {
|
if (checkAvail) {
|
||||||
if (!iv->isAvailable())
|
if (!iv->isAvailable())
|
||||||
|
@ -495,6 +493,7 @@ void app:: zeroIvValues(bool checkAvail, bool skipYieldDay) {
|
||||||
pos = iv->getPosByChFld(ch, FLD_MP, rec);
|
pos = iv->getPosByChFld(ch, FLD_MP, rec);
|
||||||
iv->setValue(pos, rec, 0.0f);
|
iv->setValue(pos, rec, 0.0f);
|
||||||
}
|
}
|
||||||
|
iv->resetAlarms();
|
||||||
|
|
||||||
iv->doCalculations();
|
iv->doCalculations();
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
//-------------------------------------
|
//-------------------------------------
|
||||||
#define VERSION_MAJOR 0
|
#define VERSION_MAJOR 0
|
||||||
#define VERSION_MINOR 8
|
#define VERSION_MINOR 8
|
||||||
#define VERSION_PATCH 81
|
#define VERSION_PATCH 82
|
||||||
|
|
||||||
//-------------------------------------
|
//-------------------------------------
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -149,9 +149,6 @@ class Inverter {
|
||||||
uint32_t tsMaxAcPower = 0; // holds the timestamp when the MaxAC power was seen
|
uint32_t tsMaxAcPower = 0; // holds the timestamp when the MaxAC power was seen
|
||||||
bool commEnabled = true; // 'pause night communication' sets this field to false
|
bool commEnabled = true; // 'pause night communication' sets this field to false
|
||||||
|
|
||||||
static uint32_t *timestamp; // system timestamp
|
|
||||||
static cfgInst_t *generalConfig; // general inverter configuration from setup
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Inverter() {
|
Inverter() {
|
||||||
|
@ -826,20 +823,23 @@ class Inverter {
|
||||||
radioId.b[0] = 0x01;
|
radioId.b[0] = 0x01;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
|
||||||
float mOffYD[6], mLastYD[6];
|
|
||||||
bool mDevControlRequest = false; // true if change needed
|
|
||||||
uint8_t mGridLen = 0;
|
|
||||||
std::array<uint8_t, MAX_GRID_LENGTH> mGridProfile;
|
|
||||||
uint8_t mAlarmNxtWrPos = 0; // indicates the position in array (rolling buffer)
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
static uint32_t *timestamp; // system timestamp
|
||||||
|
static cfgInst_t *generalConfig; // general inverter configuration from setup
|
||||||
|
|
||||||
uint16_t mDtuRxCnt = 0;
|
uint16_t mDtuRxCnt = 0;
|
||||||
uint16_t mDtuTxCnt = 0;
|
uint16_t mDtuTxCnt = 0;
|
||||||
uint8_t mGetLossInterval = 0; // request iv every AHOY_GET_LOSS_INTERVAL RealTimeRunData_Debug
|
uint8_t mGetLossInterval = 0; // request iv every AHOY_GET_LOSS_INTERVAL RealTimeRunData_Debug
|
||||||
uint16_t mIvRxCnt = 0;
|
uint16_t mIvRxCnt = 0;
|
||||||
uint16_t mIvTxCnt = 0;
|
uint16_t mIvTxCnt = 0;
|
||||||
uint16_t mAckCount = 0;
|
uint16_t mAckCount = 0;
|
||||||
|
|
||||||
|
private:
|
||||||
|
float mOffYD[6], mLastYD[6];
|
||||||
|
bool mDevControlRequest = false; // true if change needed
|
||||||
|
uint8_t mGridLen = 0;
|
||||||
|
std::array<uint8_t, MAX_GRID_LENGTH> mGridProfile;
|
||||||
|
uint8_t mAlarmNxtWrPos = 0; // indicates the position in array (rolling buffer)
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class REC_TYP>
|
template <class REC_TYP>
|
||||||
|
|
|
@ -179,20 +179,20 @@ class PubMqttIvData {
|
||||||
if (MqttSentStatus::LAST_SUCCESS_SENT == rec->mqttSentStatus) {
|
if (MqttSentStatus::LAST_SUCCESS_SENT == rec->mqttSentStatus) {
|
||||||
if(InverterDevInform_All == mCmd) {
|
if(InverterDevInform_All == mCmd) {
|
||||||
snprintf(mSubTopic.data(), mSubTopic.size(), "%s/firmware", mIv->config->name);
|
snprintf(mSubTopic.data(), mSubTopic.size(), "%s/firmware", mIv->config->name);
|
||||||
snprintf(mVal.data(), mVal.size(), "{\"version\":%d,\"build_year\":\"%s\",\"build_month_day\":%d,\"build_hour_min\":%d,\"bootloader\":%d}",
|
snprintf(mVal.data(), mVal.size(), "{\"version\":%d,\"build_year\":\"%d\",\"build_month_day\":%d,\"build_hour_min\":%d,\"bootloader\":%d}",
|
||||||
mIv->getChannelFieldValue(CH0, FLD_FW_VERSION, rec),
|
static_cast<int>(mIv->getChannelFieldValue(CH0, FLD_FW_VERSION, rec)),
|
||||||
mIv->getChannelFieldValue(CH0, FLD_FW_BUILD_YEAR, rec),
|
static_cast<int>(mIv->getChannelFieldValue(CH0, FLD_FW_BUILD_YEAR, rec)),
|
||||||
mIv->getChannelFieldValue(CH0, FLD_FW_BUILD_MONTH_DAY, rec),
|
static_cast<int>(mIv->getChannelFieldValue(CH0, FLD_FW_BUILD_MONTH_DAY, rec)),
|
||||||
mIv->getChannelFieldValue(CH0, FLD_FW_BUILD_HOUR_MINUTE, rec),
|
static_cast<int>(mIv->getChannelFieldValue(CH0, FLD_FW_BUILD_HOUR_MINUTE, rec)),
|
||||||
mIv->getChannelFieldValue(CH0, FLD_BOOTLOADER_VER, rec));
|
static_cast<int>(mIv->getChannelFieldValue(CH0, FLD_BOOTLOADER_VER, rec)));
|
||||||
retained = true;
|
retained = true;
|
||||||
} else if(InverterDevInform_Simple == mCmd) {
|
} else if(InverterDevInform_Simple == mCmd) {
|
||||||
snprintf(mSubTopic.data(), mSubTopic.size(), "%s/hardware", mIv->config->name);
|
snprintf(mSubTopic.data(), mSubTopic.size(), "%s/hardware", mIv->config->name);
|
||||||
snprintf(mVal.data(), mVal.size(), "{\"part\":%d,\"version\":\"%s\",\"grid_profile_code\":%d,\"grid_profile_version\":%d}",
|
snprintf(mVal.data(), mVal.size(), "{\"part\":%d,\"version\":\"%d\",\"grid_profile_code\":%d,\"grid_profile_version\":%d}",
|
||||||
mIv->getChannelFieldValue(CH0, FLD_PART_NUM, rec),
|
static_cast<int>(mIv->getChannelFieldValue(CH0, FLD_PART_NUM, rec)),
|
||||||
mIv->getChannelFieldValue(CH0, FLD_HW_VERSION, rec),
|
static_cast<int>(mIv->getChannelFieldValue(CH0, FLD_HW_VERSION, rec)),
|
||||||
mIv->getChannelFieldValue(CH0, FLD_GRID_PROFILE_CODE, rec),
|
static_cast<int>(mIv->getChannelFieldValue(CH0, FLD_GRID_PROFILE_CODE, rec)),
|
||||||
mIv->getChannelFieldValue(CH0, FLD_GRID_PROFILE_VERSION, rec));
|
static_cast<int>(mIv->getChannelFieldValue(CH0, FLD_GRID_PROFILE_VERSION, rec)));
|
||||||
retained = true;
|
retained = true;
|
||||||
} else {
|
} else {
|
||||||
snprintf(mSubTopic.data(), mSubTopic.size(), "%s/ch%d/%s", mIv->config->name, rec->assign[mPos].ch, fields[rec->assign[mPos].fieldId]);
|
snprintf(mSubTopic.data(), mSubTopic.size(), "%s/ch%d/%s", mIv->config->name, rec->assign[mPos].ch, fields[rec->assign[mPos].fieldId]);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue